reverse my last change, it was wrong and broken
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 24 Oct 2006 10:13:26 +0000 (10:13 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 24 Oct 2006 10:13:26 +0000 (10:13 +0000)
Originally committed as revision 6788 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/jpeg_ls.c

index cb99b5f..c0ce742 100644 (file)
@@ -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)