Mercurial > libavcodec.hg
changeset 2615:0d88e3f89379 libavcodec
avoid UPDATE_CACHE() in GET_RL_VLC() if not needed
author | michael |
---|---|
date | Mon, 18 Apr 2005 20:07:48 +0000 |
parents | 5e24800ab329 |
children | ba6530ae8e34 |
files | bitstream.h h263.c mdec.c mpeg12.c msmpeg4.c |
diffstat | 5 files changed, 18 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/bitstream.h Mon Apr 18 12:08:16 2005 +0000 +++ b/bitstream.h Mon Apr 18 20:07:48 2005 +0000 @@ -727,7 +727,7 @@ SKIP_BITS(name, gb, n)\ } -#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth)\ +#define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\ {\ int n, index, nb_bits;\ \ @@ -736,8 +736,10 @@ n = table[index].len;\ \ if(max_depth > 1 && n < 0){\ - LAST_SKIP_BITS(name, gb, bits)\ - UPDATE_CACHE(name, gb)\ + SKIP_BITS(name, gb, bits)\ + if(need_update){\ + UPDATE_CACHE(name, gb)\ + }\ \ nb_bits = -n;\ \
--- a/h263.c Mon Apr 18 12:08:16 2005 +0000 +++ b/h263.c Mon Apr 18 20:07:48 2005 +0000 @@ -4797,7 +4797,7 @@ OPEN_READER(re, &s->gb); for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 0); if (level==0) { /* escape */ if(rvlc){ @@ -4908,7 +4908,7 @@ #else SKIP_BITS(re, &s->gb, 2); #endif - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1); i+= run + rl->max_run[run>>7][level/qmul] +1; //FIXME opt indexing level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_BITS(re, &s->gb, 1); @@ -4921,7 +4921,7 @@ #else SKIP_BITS(re, &s->gb, 1); #endif - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1); i+= run; level = level + rl->max_level[run>>7][(run-1)&63] * qmul;//FIXME opt indexing level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);
--- a/mdec.c Mon Apr 18 12:08:16 2005 +0000 +++ b/mdec.c Mon Apr 18 20:07:48 2005 +0000 @@ -81,7 +81,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &a->gb); - GET_RL_VLC(level, run, re, &a->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &a->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break;
--- a/mpeg12.c Mon Apr 18 12:08:16 2005 +0000 +++ b/mpeg12.c Mon Apr 18 20:07:48 2005 +0000 @@ -1507,7 +1507,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break; @@ -1583,7 +1583,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break; @@ -1656,7 +1656,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break; @@ -1737,7 +1737,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break; @@ -1805,7 +1805,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break; @@ -1879,7 +1879,7 @@ /* now quantify & encode AC coefs */ for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl->rl_vlc[0], TEX_VLC_BITS, 2, 0); if(level == 127){ break;
--- a/msmpeg4.c Mon Apr 18 12:08:16 2005 +0000 +++ b/msmpeg4.c Mon Apr 18 20:07:48 2005 +0000 @@ -1731,7 +1731,7 @@ OPEN_READER(re, &s->gb); for(;;) { UPDATE_CACHE(re, &s->gb); - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 0); if (level==0) { int cache; cache= GET_CACHE(re, &s->gb); @@ -1829,7 +1829,7 @@ #else SKIP_BITS(re, &s->gb, 2); #endif - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1); i+= run + rl->max_run[run>>7][level/qmul] + run_diff; //FIXME opt indexing level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1); LAST_SKIP_BITS(re, &s->gb, 1); @@ -1848,7 +1848,7 @@ #else SKIP_BITS(re, &s->gb, 1); #endif - GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2); + GET_RL_VLC(level, run, re, &s->gb, rl_vlc, TEX_VLC_BITS, 2, 1); i+= run; level = level + rl->max_level[run>>7][(run-1)&63] * qmul;//FIXME opt indexing level = (level ^ SHOW_SBITS(re, &s->gb, 1)) - SHOW_SBITS(re, &s->gb, 1);