1
0
Fork 0
forked from len0rd/rockbox

Fix a fixme in flac and make the usage of the read_filebuf codec api more consistent with its actual contract.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15303 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Brandon Low 2007-10-25 18:58:44 +00:00
parent 35f23267bf
commit 4bde8982f1
2 changed files with 9 additions and 19 deletions

View file

@ -77,8 +77,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
uint32_t offset_hi,offset_lo;
uint16_t blocksize;
int endofmetadata=0;
int blocklength;
int n;
uint32_t blocklength;
ci->memset(fc,0,sizeof(FLACContext));
nseekpoints=0;
@ -113,9 +112,7 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
if ((buf[0] & 0x7f) == 0) /* 0 is the STREAMINFO block */
{
/* FIXME: Don't trust the value of blocklength, use actual return
* value in bytes instead */
ci->read_filebuf(buf, blocklength);
if (ci->read_filebuf(buf, blocklength) < blocklength) return false;
fc->filesize = ci->filesize;
fc->min_blocksize = (buf[0] << 8) | buf[1];
@ -140,9 +137,8 @@ static bool flac_init(FLACContext* fc, int first_frame_offset)
} else if ((buf[0] & 0x7f) == 3) { /* 3 is the SEEKTABLE block */
while ((nseekpoints < MAX_SUPPORTED_SEEKTABLE_SIZE) &&
(blocklength >= 18)) {
n=ci->read_filebuf(buf,18);
if (n < 18) return false;
blocklength-=n;
if (ci->read_filebuf(buf,18) < 18) return false;
blocklength-=18;
seekpoint_hi=(buf[0] << 24) | (buf[1] << 16) |
(buf[2] << 8) | buf[3];

View file

@ -1204,8 +1204,6 @@ unsigned short LoadSIDFromMemory(void *pSidData, unsigned short *load_addr,
enum codec_status codec_main(void)
{
size_t n, bytesfree;
unsigned char *p;
unsigned int filesize;
unsigned short load_addr, init_addr, play_addr;
@ -1229,20 +1227,16 @@ next_track:
codec_set_replaygain(ci->id3);
/* Load SID file */
p = sidfile;
bytesfree=sizeof(sidfile);
while ((n = ci->read_filebuf(p, bytesfree)) > 0) {
p += n;
bytesfree -= n;
}
filesize = p-sidfile;
/* Load SID file the read_filebuf callback will return the full requested
* size if at all possible, so there is no need to loop */
filesize = ci->read_filebuf(sidfile, sizeof(sidfile));
if (filesize == 0)
return CODEC_ERROR;
c64Init(44100);
LoadSIDFromMemory(sidfile, &load_addr, &init_addr, &play_addr, &subSongsMax, &subSong, &song_speed, filesize);
LoadSIDFromMemory(sidfile, &load_addr, &init_addr, &play_addr,
&subSongsMax, &subSong, &song_speed, filesize);
sidPoke(24, 15); /* Turn on full volume */
cpuJSR(init_addr, subSong); /* Start the song initialize */