diff options
author | jep <jep@2b0047a9-a6d8-0310-accf-f7200b2a168c> | 2014-10-09 16:42:36 +0000 |
---|---|---|
committer | jep <jep@2b0047a9-a6d8-0310-accf-f7200b2a168c> | 2014-10-09 16:42:36 +0000 |
commit | 769b7b0c05c0f1e859b60796f1b0de866ab8edd4 (patch) | |
tree | b0af892fe88ebb37bea3629b42412b74c98e2429 | |
parent | a0a817ee6afa62f00f90c048920e822c0e54bdf7 (diff) |
* src/mp3-c.c: (III_huffman_decode):
Fixes a noise issue in a MPEG 2.5 clip.
git-svn-id: https://core.fluendo.com/gstreamer/svn/trunk/gst-fluendo-mp3@2632 2b0047a9-a6d8-0310-accf-f7200b2a168c
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/mp3-c.c | 23 |
2 files changed, 15 insertions, 13 deletions
@@ -1,3 +1,8 @@ +2014-10-09 Josep Torra <josep@fluendo.com> + + * src/mp3-c.c: (III_huffman_decode): + Fixes a noise issue in a MPEG 2.5 clip. + 2014-09-18 Josep Torra <josep@fluendo.com> * configure.ac: drop missed reference to liboil. diff --git a/src/mp3-c.c b/src/mp3-c.c index 2e9131d..b4dc6b6 100644 --- a/src/mp3-c.c +++ b/src/mp3-c.c @@ -552,21 +552,18 @@ 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 && - !(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 */ + if ((gi->window_switching_flag) && (gi->block_type == 2)) { + /* Region2. */ + if (fr_ps->header.version == MPEG_VERSION_2_5 + && fr_ps->header.srate_idx == 2) { + region1Start = 72; + } else { + region1Start = 36; /* sfb[9/3]*3=36 */ } region2Start = 576; /* No Region2 for short block case. */ + } else { /* Find region boundary for long block case. */ + region1Start = sfBandIndex[sfreq].l[gi->region0_count + 1]; /* MI */ + region2Start = sfBandIndex[sfreq].l[gi->region0_count + gi->region1_count + 2]; /* MI */ } /* Read bigvalues area. */ |