summaryrefslogtreecommitdiff
path: root/libavcodec/jpeg_ls.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-10-24 10:13:26 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-10-24 10:13:26 +0000
commit54fe115921ac6451055fee469889d18a66fa8bea (patch)
treefbe9d9c9a532c26b37d042801b8ba3d2a23753f8 /libavcodec/jpeg_ls.c
parent46d9fe622d6d50bb9e83ccdb0a97ce2ed9a79280 (diff)
reverse my last change, it was wrong and broken
Originally committed as revision 6788 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/jpeg_ls.c')
-rw-r--r--libavcodec/jpeg_ls.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/libavcodec/jpeg_ls.c b/libavcodec/jpeg_ls.c
index cb99b5f519..c0ce742c53 100644
--- a/libavcodec/jpeg_ls.c
+++ b/libavcodec/jpeg_ls.c
@@ -532,7 +532,7 @@ static inline void ls_encode_regular(JLSState *state, PutBitContext *pb, int Q,
*/
static inline void ls_encode_runterm(JLSState *state, PutBitContext *pb, int RItype, int err, int limit_add){
int k;
- int val;
+ int val, map;
int Q = 365 + RItype;
int temp;
@@ -540,13 +540,14 @@ static inline void ls_encode_runterm(JLSState *state, PutBitContext *pb, int RIt
if(RItype)
temp += state->N[Q] >> 1;
for(k = 0; (state->N[Q] << k) < temp; k++);
- if(!k && (2 * state->B[Q] < state->N[Q]))
- err= -err;
+ map = 0;
+ if(!k && err && (2 * state->B[Q] < state->N[Q]))
+ map = 1;
if(err < 0)
- val = - (2 * err) - 1 - RItype;
+ val = - (2 * err) - 1 - RItype + map;
else
- val = 2 * err - RItype;
+ val = 2 * err - RItype - map;
set_ur_golomb_jpegls(pb, val, k, state->limit - limit_add - 1, state->qbpp);
if(err < 0)