[Ffmpeg-cvslog] r6578 - in trunk/libavcodec: cabac.h h264.c
michael
subversion
Sat Oct 7 17:44:14 CEST 2006
Author: michael
Date: Sat Oct 7 17:44:14 2006
New Revision: 6578
Modified:
trunk/libavcodec/cabac.h
trunk/libavcodec/h264.c
Log:
refill cabac variables in 16bit steps, 3% faster get_cabac()
Modified: trunk/libavcodec/cabac.h
==============================================================================
--- trunk/libavcodec/cabac.h (original)
+++ trunk/libavcodec/cabac.h Sat Oct 7 17:44:14 2006
@@ -29,7 +29,7 @@
//#undef NDEBUG
#include <assert.h>
-#define CABAC_BITS 8
+#define CABAC_BITS 16
#define CABAC_MASK ((1<<CABAC_BITS)-1)
typedef struct CABACContext{
@@ -302,7 +302,7 @@
#if 0
//P3:683
asm(
- "lea -0x20000(%0), %2 \n\t"
+ "lea -0x2000000(%0), %2 \n\t"
"shr $31, %2 \n\t" //FIXME 31->63 for x86-64
"shl %%cl, %0 \n\t"
"shl %%cl, %1 \n\t"
@@ -311,7 +311,7 @@
#elif 0
//P3:680
asm(
- "cmp $0x20000, %0 \n\t"
+ "cmp $0x2000000, %0 \n\t"
"setb %%cl \n\t" //FIXME 31->63 for x86-64
"shl %%cl, %0 \n\t"
"shl %%cl, %1 \n\t"
@@ -321,7 +321,7 @@
int temp2;
//P3:665
asm(
- "lea -0x20000(%0), %%eax \n\t"
+ "lea -0x2000000(%0), %%eax \n\t"
"cdq \n\t"
"mov %0, %%eax \n\t"
"and %%edx, %0 \n\t"
@@ -334,7 +334,7 @@
int temp2;
//P3:673
asm(
- "cmp $0x20000, %0 \n\t"
+ "cmp $0x2000000, %0 \n\t"
"sbb %%edx, %%edx \n\t"
"mov %0, %%eax \n\t"
"and %%edx, %0 \n\t"
@@ -347,7 +347,7 @@
int temp2;
//P3:677
asm(
- "cmp $0x20000, %0 \n\t"
+ "cmp $0x2000000, %0 \n\t"
"lea (%0, %0), %%eax \n\t"
"lea (%1, %1), %%edx \n\t"
"cmovb %%eax, %0 \n\t"
Modified: trunk/libavcodec/h264.c
==============================================================================
--- trunk/libavcodec/h264.c (original)
+++ trunk/libavcodec/h264.c Sat Oct 7 17:44:14 2006
@@ -7420,7 +7420,7 @@
}
eos = get_cabac_terminate( &h->cabac );
- if( ret < 0 || h->cabac.bytestream > h->cabac.bytestream_end + 1) {
+ if( ret < 0 || h->cabac.bytestream > h->cabac.bytestream_end + 2) {
av_log(h->s.avctx, AV_LOG_ERROR, "error while decoding MB %d %d, bytestream (%d)\n", s->mb_x, s->mb_y, h->cabac.bytestream_end - h->cabac.bytestream);
ff_er_add_slice(s, s->resync_mb_x, s->resync_mb_y, s->mb_x, s->mb_y, (AC_ERROR|DC_ERROR|MV_ERROR)&part_mask);
return -1;
More information about the ffmpeg-cvslog
mailing list