include some bug fixes from libmpg123

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29647 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
David McPaul
2009-03-22 07:24:44 +00:00
parent 7eae23728e
commit 5bdaad49f9
3 changed files with 20 additions and 7 deletions
@@ -128,8 +128,9 @@ mp3Decoder::Setup(media_format *ioEncodedFormat,
const void *infoBuffer, size_t infoSize)
{
// decode first chunk to initialize mpeg library
if (B_OK != DecodeNextChunk()) {
printf("mp3Decoder::Setup failed, can't decode first chunk\n");
status_t err = DecodeNextChunk();
if (B_OK != err) {
printf("mp3Decoder::Setup failed, can't decode first chunk %ld\n",err);
return B_ERROR;
}
@@ -377,10 +378,14 @@ mp3Decoder::GetFrameLength(const void *header)
{
const uint8 *h = static_cast<const uint8 *>(header);
if (h[0] != 0xff)
if (h[0] != 0xff) {
TRACE("No 0xff MP3 Header in chunk %x\n",h[0]);
return -1;
if ((h[1] & 0xe0) != 0xe0)
}
if ((h[1] & 0xe0) != 0xe0) {
TRACE("No 0xe0 MP3 Header in chunk %x\n",h[1]);
return -1;
}
int mpeg_version_index = (h[1] >> 3) & 0x03;
int layer_index = (h[1] >> 1) & 0x03;
@@ -392,8 +397,16 @@ mp3Decoder::GetFrameLength(const void *header)
int bitrate = bit_rate_table[mpeg_version_index][layer_index][bitrate_index];
int framerate = frame_rate_table[mpeg_version_index][sampling_rate_index];
if (!bitrate || !framerate)
TRACE("%s %s, %s crc, bit rate %d, frame rate %d, padding %d",
mpeg_version_index == 0 ? "mpeg 2.5" : (mpeg_version_index == 2 ? "mpeg 2" : "mpeg 1"),
layer_index == 3 ? "layer 1" : (layer_index == 2 ? "layer 2" : "layer 3"),
(h[1] & 0x01) ? "no" : "has",
bitrate, framerate, padding);
if (!bitrate || !framerate) {
TRACE("Invalid bitrate %d or framerate %d\n",bitrate,framerate);
return -1;
}
int length;
if (layer_index == 3) // layer 1
@@ -19,7 +19,7 @@ void I_step_one(struct mpstr *mp, unsigned int balloc[], unsigned int scale_inde
unsigned int *ba=balloc;
unsigned int *sca = (unsigned int *) scale_index;
if(fr->stereo) {
if(fr->stereo == 2) {
int i;
int jsbound = fr->jsbound;
for (i=0;i<jsbound;i++) {
@@ -56,7 +56,7 @@ struct bandInfoStruct bandInfo[9] = {
{4,4,4,6,6,8,10,14,18,26,32,42,18 } } ,
{ {0,6,12,18,24,30,36,44,54,66,80,96,114,136,162,194,232,278,330,394,464,540,576},
{6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,52,64,70,76,36 } ,
{6,6,6,6,6,6,8,10,12,14,16,18,22,26,32,38,46,54,62,70,76,36 } ,
{0,4*3,8*3,12*3,18*3,26*3,36*3,48*3,62*3,80*3,104*3,136*3,180*3,192*3} ,
{4,4,4,6,8,10,12,14,18,24,32,44,12 } } ,