summaryrefslogtreecommitdiff
path: root/libavcodec/apedec.c
diff options
context:
space:
mode:
authorKostya Shishkov <kostya.shishkov@gmail.com>2008-09-24 12:45:28 +0000
committerKostya Shishkov <kostya.shishkov@gmail.com>2008-09-24 12:45:28 +0000
commite774c41cab765f5d12ecfb31e5fa30df41230de0 (patch)
tree380a19df70b4ff345a157852ec6b6a362c5bd7c9 /libavcodec/apedec.c
parentf26be477406785ffa88a127fd01574dfae040753 (diff)
Correct wrong lower limit and condition used in APE decoder
Originally committed as revision 15396 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/apedec.c')
-rw-r--r--libavcodec/apedec.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c
index 0489ab49dd..82d567f4cf 100644
--- a/libavcodec/apedec.c
+++ b/libavcodec/apedec.c
@@ -358,11 +358,10 @@ static inline int range_get_symbol(APEContext * ctx,
static inline void update_rice(APERice *rice, int x)
{
+ int lim = rice->k ? (1 << (rice->k + 4)) : 0;
rice->ksum += ((x + 1) / 2) - ((rice->ksum + 16) >> 5);
- if (rice->k == 0)
- rice->k = 1;
- else if (rice->ksum < (1 << (rice->k + 4)))
+ if (rice->ksum < lim)
rice->k--;
else if (rice->ksum >= (1 << (rice->k + 5)))
rice->k++;