diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2003-03-10 18:25:40 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2003-03-10 18:25:40 +0000 |
commit | 2c07e78efc0e8ab7150eef7ae92af32b2389146a (patch) | |
tree | 3c599a72a1ad318f3deaaf6d02334c4f0c936a0f /firmware/mp3data.c | |
parent | 6475aa0c85fcca7a37a7aa4316173270fcb6d038 (diff) | |
download | rockbox-2c07e78efc0e8ab7150eef7ae92af32b2389146a.tar.gz rockbox-2c07e78efc0e8ab7150eef7ae92af32b2389146a.zip |
Don't accidentally add Xing headers to CBR files
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3419 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/mp3data.c')
-rw-r--r-- | firmware/mp3data.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/firmware/mp3data.c b/firmware/mp3data.c index 21f01ea19e..f38b51c8f4 100644 --- a/firmware/mp3data.c +++ b/firmware/mp3data.c | |||
@@ -555,9 +555,9 @@ int count_mp3_frames(int fd, int startpos, int filesize, | |||
555 | int cnt; | 555 | int cnt; |
556 | int progress_chunk = filesize / 50; /* Max is 50%, in 1% increments */ | 556 | int progress_chunk = filesize / 50; /* Max is 50%, in 1% increments */ |
557 | int progress_cnt = 0; | 557 | int progress_cnt = 0; |
558 | bool is_vbr = false; | ||
559 | int last_bitrate = 0; | ||
558 | 560 | ||
559 | /* Nasty stuff to avoid passing the file handle around */ | ||
560 | |||
561 | if(lseek(fd, startpos, SEEK_SET) < 0) | 561 | if(lseek(fd, startpos, SEEK_SET) < 0) |
562 | return -1; | 562 | return -1; |
563 | 563 | ||
@@ -569,6 +569,14 @@ int count_mp3_frames(int fd, int startpos, int filesize, | |||
569 | 569 | ||
570 | while((header = buf_find_next_frame(fd, &bytes, -1, header))) { | 570 | while((header = buf_find_next_frame(fd, &bytes, -1, header))) { |
571 | mp3headerinfo(&info, header); | 571 | mp3headerinfo(&info, header); |
572 | |||
573 | /* See if this really is a VBR file */ | ||
574 | if(last_bitrate && info.bitrate != last_bitrate) | ||
575 | { | ||
576 | is_vbr = true; | ||
577 | } | ||
578 | last_bitrate = info.bitrate; | ||
579 | |||
572 | buf_seek(fd, info.frame_size-4); | 580 | buf_seek(fd, info.frame_size-4); |
573 | num_frames++; | 581 | num_frames++; |
574 | if(progressfunc) | 582 | if(progressfunc) |
@@ -583,8 +591,14 @@ int count_mp3_frames(int fd, int startpos, int filesize, | |||
583 | } | 591 | } |
584 | } | 592 | } |
585 | DEBUGF("Total number of frames: %d\n", num_frames); | 593 | DEBUGF("Total number of frames: %d\n", num_frames); |
586 | 594 | ||
587 | return num_frames; | 595 | if(is_vbr) |
596 | return num_frames; | ||
597 | else | ||
598 | { | ||
599 | DEBUGF("Not a VBR file\n"); | ||
600 | return 0; | ||
601 | } | ||
588 | } | 602 | } |
589 | 603 | ||
590 | int create_xing_header(int fd, int startpos, int filesize, | 604 | int create_xing_header(int fd, int startpos, int filesize, |