diff options
author | jep <jep@2b0047a9-a6d8-0310-accf-f7200b2a168c> | 2013-09-02 16:56:53 +0000 |
---|---|---|
committer | jep <jep@2b0047a9-a6d8-0310-accf-f7200b2a168c> | 2013-09-02 16:56:53 +0000 |
commit | 0c5b6fe61e1728e3f89b80a6181ca136c2986d0f (patch) | |
tree | 709125e32e292274d919b3d4f07ebc6de63bb61e | |
parent | c13b90401648eb9c3e3851d10df22df3ce35bfac (diff) |
* src/mp3-c.c: (III_huffman_decode):
Fixes decoding of some mpeg 2.5 clips.
git-svn-id: https://core.fluendo.com/gstreamer/svn/trunk/gst-fluendo-mp3@2499 2b0047a9-a6d8-0310-accf-f7200b2a168c
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/mp3-c.c | 18 |
2 files changed, 18 insertions, 5 deletions
@@ -1,5 +1,10 @@ 2013-09-02 Josep Torra <josep@fluendo.com> + * src/mp3-c.c: (III_huffman_decode): + Fixes decoding of some mpeg 2.5 clips. + +2013-09-02 Josep Torra <josep@fluendo.com> + * src/mp3-c.c: (III_dequantize_sample): * src/mp3-ipp.c: (ipp_decode_mp3): Fix debugging code. diff --git a/src/mp3-c.c b/src/mp3-c.c index 8f80f88..5c0fc0a 100644 --- a/src/mp3-c.c +++ b/src/mp3-c.c @@ -556,13 +556,21 @@ III_huffman_decode (gint is[SBLIMIT][SSLIMIT], III_side_info_t * si, sfreq = sfb_offset[fr_ps->header.version] + fr_ps->header.srate_idx; /* Find region boundary for short block case. */ - if ((gi->window_switching_flag) && (gi->block_type == 2)) { - /* Region2. */ - region1Start = 36; /* sfb[9/3]*3=36 */ - region2Start = 576; /* No Region2 for short block case. */ - } else { /* Find region boundary for long block case. */ + if (!gi->window_switching_flag || (gi->block_type != 2 && + !(fr_ps->header.version == MPEG_VERSION_2_5))) { region1Start = sfBandIndex[sfreq].l[gi->region0_count + 1]; /* MI */ region2Start = sfBandIndex[sfreq].l[gi->region0_count + gi->region1_count + 2]; /* MI */ + } else { /* Find region boundary for long block case. */ + if (gi->block_type == 2) { + if (fr_ps->header.version == MPEG_VERSION_2_5) { + region1Start = 72; /* sfb[9/3]*3=36 */ + } else { + region1Start = 36; /* sfb[9/3]*3=36 */ + } + } else { + region1Start = 108; /* sfb[9/3]*3=36 */ + } + region2Start = 576; /* No Region2 for short block case. */ } /* Read bigvalues area. */ |