From: Francois B <mrs...@us...> - 2004-04-24 18:14:42
|
Update of /cvsroot/openneo/openneo/firmware In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21135 Modified Files: mp3data.c Log Message: Commented out create_xing_header() Index: mp3data.c =================================================================== RCS file: /cvsroot/openneo/openneo/firmware/mp3data.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** mp3data.c 25 Jan 2004 01:53:55 -0000 1.3 --- mp3data.c 24 Apr 2004 18:14:32 -0000 1.4 *************** *** 606,767 **** } ! static const char cooltext[] = "Rockbox - rocks your box"; ! int create_xing_header(int fd, int startpos, int filesize, ! unsigned char *buf, int num_frames, ! unsigned long header_template, ! void (*progressfunc)(int), bool generate_toc) ! { ! unsigned long header = 0; ! struct mp3info info; ! int pos, last_pos; ! int i, j; ! int bytes; ! unsigned int filepos; ! int x; ! int index; ! unsigned char toc[100]; ! unsigned long xing_header_template = 0; ! DEBUGF("create_xing_header()\n"); ! if(header_template) ! xing_header_template = header_template; ! if(generate_toc) ! { ! lseek(fd, startpos, SEEK_SET); ! buf_init(); /* Generate filepos table */ ! last_pos = 0; ! filepos = 0; ! header = 0; ! x = 0; ! for(i = 0;i < 100;i++) { /* Calculate the absolute frame number for this seek point */ ! pos = i * num_frames / 100; ! /* Advance from the last seek point to this one */ ! for(j = 0;j < pos - last_pos;j++) ! { ! header = buf_find_next_frame(fd, &bytes, -1, header_template); ! filepos += bytes; ! mp3headerinfo(&info, header); ! buf_seek(fd, info.frame_size-4); ! filepos += info.frame_size; ! if(!header_template) ! header_template = header; ! } ! /* Save a header for later use. Yes, we may be passed a header ! template in the header_template argument, but since we are ! reading headers from the stream anyway, we might as well ! use the ones we find. However, we only save one header, and ! we want to save one in te middle of the stream, just in case ! the first and the last headers are corrupt. */ ! if(!xing_header_template && i == 1) ! xing_header_template = header; ! if(progressfunc) ! { ! progressfunc(50 + i/2); ! } /* Fill in the TOC entry */ /* each toc is a single byte indicating how many 256ths of the ! * way through the file, is that percent of the way through the ! * song. the easy method, filepos*256/filesize, chokes when ! * the upper 8 bits of the file position are nonzero ! * (i.e. files over 16mb in size). ! */ ! if (filepos > 0xFFFFFF) ! { ! /* instead of multiplying filepos by 256, we divide ! * filesize by 256. ! */ ! toc[i] = filepos / (filesize >> 8); ! } ! else ! { ! toc[i] = filepos * 256 / filesize; ! } ! DEBUGF("Pos %d: %d relpos: %d filepos: %x tocentry: %x\n", ! i, pos, pos-last_pos, filepos, toc[i]); ! last_pos = pos; ! } ! } /* Clear the frame */ ! memset(buf, 0, 1500); ! /* Use the template header and create a new one */ ! mp3headerinfo(&info, xing_header_template); ! /* calculate position of VBR header */ ! if ( info.version == MPEG_VERSION1 ) { ! if (info.channel_mode == 3) /* mono */ ! index = 21; ! else ! index = 36; ! } ! else { ! if (info.channel_mode == 3) /* mono */ ! index = 13; ! else ! index = 21; ! } ! /* We ignore the Protection bit even if the rest of the stream is ! protected. (fixme?) */ ! header = xing_header_template & ~(BITRATE_MASK | PROTECTION_MASK); ! header |= 8 << 12; /* This gives us plenty of space, at least 192 bytes */ ! /* Write the header to the buffer */ ! int2bytes(buf, header); ! /* Now get the length of the newly created frame */ ! mp3headerinfo(&info, header); ! /* Create the Xing data */ ! buf[index] = 'X'; ! buf[index+1] = 'i'; ! buf[index+2] = 'n'; ! buf[index+3] = 'g'; ! int2bytes(&buf[index+4], ((num_frames?VBR_FRAMES_FLAG:0) | ! (filesize?VBR_BYTES_FLAG:0) | ! (generate_toc?VBR_TOC_FLAG:0))); ! index = index+8; ! if(num_frames) ! { ! int2bytes(&buf[index], num_frames); ! index += 4; ! } ! if(filesize) ! { ! int2bytes(&buf[index], filesize - startpos); ! index += 4; ! } ! /* Copy the TOC */ ! memcpy(buf + index, toc, 100); ! /* And some extra cool info */ ! memcpy(buf + index + 100, cooltext, sizeof(cooltext)); ! #ifdef DEBUG ! for(i = 0;i < info.frame_size;i++) ! { ! if(i && !(i % 16)) ! DEBUGF("\n"); ! DEBUGF("%02x ", buf[i]); ! } ! #endif ! return info.frame_size; ! } --- 606,767 ---- } ! /* static const char cooltext[] = "Rockbox - rocks your box"; */ ! /* int create_xing_header(int fd, int startpos, int filesize, */ ! /* unsigned char *buf, int num_frames, */ ! /* unsigned long header_template, */ ! /* void (*progressfunc)(int), bool generate_toc) */ ! /* { */ ! /* unsigned long header = 0; */ ! /* struct mp3info info; */ ! /* int pos, last_pos; */ ! /* int i, j; */ ! /* int bytes; */ ! /* unsigned int filepos; */ ! /* int x; */ ! /* int index; */ ! /* unsigned char toc[100]; */ ! /* unsigned long xing_header_template = 0; */ ! /* DEBUGF("create_xing_header()\n"); */ ! /* if(header_template) */ ! /* xing_header_template = header_template; */ ! /* if(generate_toc) */ ! /* { */ ! /* lseek(fd, startpos, SEEK_SET); */ ! /* buf_init(); */ /* Generate filepos table */ ! /* last_pos = 0; */ ! /* filepos = 0; */ ! /* header = 0; */ ! /* x = 0; */ ! /* for(i = 0;i < 100;i++) { */ /* Calculate the absolute frame number for this seek point */ ! /* pos = i * num_frames / 100; */ ! /* Advance from the last seek point to this one */ ! /* for(j = 0;j < pos - last_pos;j++) */ ! /* { */ ! /* header = buf_find_next_frame(fd, &bytes, -1, header_template); */ ! /* filepos += bytes; */ ! /* mp3headerinfo(&info, header); */ ! /* buf_seek(fd, info.frame_size-4); */ ! /* filepos += info.frame_size; */ ! /* if(!header_template) */ ! /* header_template = header; */ ! /* } */ ! /* Save a header for later use. Yes, we may be passed a header */ ! /* template in the header_template argument, but since we are */ ! /* reading headers from the stream anyway, we might as well */ ! /* use the ones we find. However, we only save one header, and */ ! /* we want to save one in te middle of the stream, just in case */ ! /* the first and the last headers are corrupt.*/ ! /* if(!xing_header_template && i == 1) */ ! /* xing_header_template = header; */ ! /* if(progressfunc) */ ! /* { */ ! /* progressfunc(50 + i/2); */ ! /* } */ /* Fill in the TOC entry */ /* each toc is a single byte indicating how many 256ths of the ! /* * way through the file, is that percent of the way through the */ ! /* * song. the easy method, filepos*256/filesize, chokes when */ ! /* * the upper 8 bits of the file position are nonzero */ ! /* * (i.e. files over 16mb in size). */ ! /* */ ! /* if (filepos > 0xFFFFFF) */ ! /* { */ ! /* /* instead of multiplying filepos by 256, we divide */ ! /* * filesize by 256. */ ! /* */ ! /* toc[i] = filepos / (filesize >> 8); */ ! /* } */ ! /* else */ ! /* { */ ! /* toc[i] = filepos * 256 / filesize; */ ! /* } */ ! /* DEBUGF("Pos %d: %d relpos: %d filepos: %x tocentry: %x\n", */ ! /* i, pos, pos-last_pos, filepos, toc[i]); */ ! /* last_pos = pos; */ ! /* } */ ! /* } */ /* Clear the frame */ ! /* memset(buf, 0, 1500); */ ! /* Use the template header and create a new one */ ! /* mp3headerinfo(&info, xing_header_template); */ ! /* calculate position of VBR header */ ! /* if ( info.version == MPEG_VERSION1 ) { */ ! /* if (info.channel_mode == 3) /* mono */ ! /* index = 21; */ ! /* else */ ! /* index = 36; */ ! /* } */ ! /* else { */ ! /* if (info.channel_mode == 3) /* mono */ ! /* index = 13; */ ! /* else */ ! /* index = 21; */ ! /* } */ ! /* We ignore the Protection bit even if the rest of the stream is ! protected. (fixme?) */ ! /* header = xing_header_template & ~(BITRATE_MASK | PROTECTION_MASK); */ ! /* header |= 8 << 12; */ /* This gives us plenty of space, at least 192 bytes */ ! /* Write the header to the buffer */ ! /* int2bytes(buf, header); */ ! /* Now get the length of the newly created frame */ ! /* mp3headerinfo(&info, header); */ ! /* Create the Xing data */ ! /* buf[index] = 'X'; */ ! /* buf[index+1] = 'i'; */ ! /* buf[index+2] = 'n'; */ ! /* buf[index+3] = 'g'; */ ! /* int2bytes(&buf[index+4], ((num_frames?VBR_FRAMES_FLAG:0) | */ ! /* (filesize?VBR_BYTES_FLAG:0) | */ ! /* (generate_toc?VBR_TOC_FLAG:0))); */ ! /* index = index+8; */ ! /* if(num_frames) */ ! /* { */ ! /* int2bytes(&buf[index], num_frames); */ ! /* index += 4; */ ! /* } */ ! /* if(filesize) */ ! /* { */ ! /* int2bytes(&buf[index], filesize - startpos); */ ! /* index += 4; */ ! /* } */ ! /* Copy the TOC */ ! /* memcpy(buf + index, toc, 100); */ ! /* And some extra cool info */ ! /* memcpy(buf + index + 100, cooltext, sizeof(cooltext)); */ ! /* #ifdef DEBUG */ ! /* for(i = 0;i < info.frame_size;i++) */ ! /* { */ ! /* if(i && !(i % 16)) */ ! /* DEBUGF("\n"); */ ! /* DEBUGF("%02x ", buf[i]); */ ! /* } */ ! /* #endif */ ! /* return info.frame_size; */ ! /* } */ |