diff options
author | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2010-03-21 16:03:45 +0000 |
---|---|---|
committer | Reimar Döffinger <Reimar.Doeffinger@gmx.de> | 2010-03-21 16:03:45 +0000 |
commit | c787cb339ed7b49a303b7d8b7a5197b38e89c7c3 (patch) | |
tree | 97375ee8ff3d244203954338a34b5aaf82dad491 /libavcodec/dv.c | |
parent | 8de0859bcb48172a3dfcafa150fcd0319fa28ea4 (diff) | |
download | ffmpeg-c787cb339ed7b49a303b7d8b7a5197b38e89c7c3.tar.gz |
Add support for hard-coding the 256kB large dv_vlc_map table.
Originally committed as revision 22622 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dv.c')
-rw-r--r-- | libavcodec/dv.c | 57 |
1 files changed, 2 insertions, 55 deletions
diff --git a/libavcodec/dv.c b/libavcodec/dv.c index a35bd14f9e..6711274704 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -44,7 +44,7 @@ #include "put_bits.h" #include "simple_idct.h" #include "dvdata.h" -#include "dv_vlc_data.h" +#include "dv_tablegen.h" //#undef NDEBUG //#include <assert.h> @@ -65,21 +65,8 @@ typedef struct DVVideoContext { #define TEX_VLC_BITS 9 -#if CONFIG_SMALL -#define DV_VLC_MAP_RUN_SIZE 15 -#define DV_VLC_MAP_LEV_SIZE 23 -#else -#define DV_VLC_MAP_RUN_SIZE 64 -#define DV_VLC_MAP_LEV_SIZE 512 //FIXME sign was removed so this should be /2 but needs check -#endif - /* XXX: also include quantization */ static RL_VLC_ELEM dv_rl_vlc[1184]; -/* VLC encoding lookup table */ -static struct dv_vlc_pair { - uint32_t vlc; - uint8_t size; -} dv_vlc_map[DV_VLC_MAP_RUN_SIZE][DV_VLC_MAP_LEV_SIZE]; static inline int dv_work_pool_size(const DVprofile *d) { @@ -326,47 +313,7 @@ static av_cold int dvvideo_init(AVCodecContext *avctx) } free_vlc(&dv_vlc); - for (i = 0; i < NB_DV_VLC - 1; i++) { - if (dv_vlc_run[i] >= DV_VLC_MAP_RUN_SIZE) - continue; -#if CONFIG_SMALL - if (dv_vlc_level[i] >= DV_VLC_MAP_LEV_SIZE) - continue; -#endif - - if (dv_vlc_map[dv_vlc_run[i]][dv_vlc_level[i]].size != 0) - continue; - - dv_vlc_map[dv_vlc_run[i]][dv_vlc_level[i]].vlc = - dv_vlc_bits[i] << (!!dv_vlc_level[i]); - dv_vlc_map[dv_vlc_run[i]][dv_vlc_level[i]].size = - dv_vlc_len[i] + (!!dv_vlc_level[i]); - } - for (i = 0; i < DV_VLC_MAP_RUN_SIZE; i++) { -#if CONFIG_SMALL - for (j = 1; j < DV_VLC_MAP_LEV_SIZE; j++) { - if (dv_vlc_map[i][j].size == 0) { - dv_vlc_map[i][j].vlc = dv_vlc_map[0][j].vlc | - (dv_vlc_map[i-1][0].vlc << (dv_vlc_map[0][j].size)); - dv_vlc_map[i][j].size = dv_vlc_map[i-1][0].size + - dv_vlc_map[0][j].size; - } - } -#else - for (j = 1; j < DV_VLC_MAP_LEV_SIZE/2; j++) { - if (dv_vlc_map[i][j].size == 0) { - dv_vlc_map[i][j].vlc = dv_vlc_map[0][j].vlc | - (dv_vlc_map[i-1][0].vlc << (dv_vlc_map[0][j].size)); - dv_vlc_map[i][j].size = dv_vlc_map[i-1][0].size + - dv_vlc_map[0][j].size; - } - dv_vlc_map[i][((uint16_t)(-j))&0x1ff].vlc = - dv_vlc_map[i][j].vlc | 1; - dv_vlc_map[i][((uint16_t)(-j))&0x1ff].size = - dv_vlc_map[i][j].size; - } -#endif - } + dv_vlc_map_tableinit(); } /* Generic DSP setup */ |