naive fix in avc_get_first_mb_bit_offset_with_epb
authorTobias Jakobi <liquid.acid@gmx.net>
Sun, 30 Dec 2012 11:44:28 +0000 (12:44 +0100)
committerXiang, Haihao <haihao.xiang@intel.com>
Fri, 4 Jan 2013 02:43:28 +0000 (10:43 +0800)
Bugzilla:://bugs.freedesktop.org/show_bug.cgi?id=58875
Signed-off-by: Tobias Jakobi <liquid.acid@gmx.net>
src/i965_decoder_utils.c

index 6326796..98e931a 100644 (file)
@@ -196,7 +196,7 @@ avc_get_first_mb_bit_offset_with_epb(
 {
     unsigned int in_slice_data_bit_offset = slice_param->slice_data_bit_offset;
     unsigned int out_slice_data_bit_offset;
-    unsigned int i, j, buf_size, data_size, header_size;
+    unsigned int i, j, n, buf_size, data_size, header_size;
     uint8_t *buf;
     int ret;
 
@@ -213,11 +213,11 @@ avc_get_first_mb_bit_offset_with_epb(
     );
     assert(ret == 0);
 
-    for (i = 2, j = 2; i < buf_size && j < header_size; i++, j++) {
+    for (i = 2, j = 2, n = 0; i < buf_size && j < header_size; i++, j++) {
         if (buf[i] == 0x03 && buf[i - 1] == 0x00 && buf[i - 2] == 0x00)
-            i += 2, j++;
+            i += 2, j++, n++;
     }
-    out_slice_data_bit_offset = in_slice_data_bit_offset % 8 + i * 8;
+    out_slice_data_bit_offset = in_slice_data_bit_offset + n * 8;
 
     if (mode_flag == ENTROPY_CABAC)
         out_slice_data_bit_offset = ALIGN(out_slice_data_bit_offset, 0x8);