move init_vlc_rl from h263.c to mpegvideo.c
Originally committed as revision 9578 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
7da31a80b7
commit
898d5d5daa
@ -2889,59 +2889,6 @@ static VLC mb_type_b_vlc;
|
|||||||
static VLC h263_mbtype_b_vlc;
|
static VLC h263_mbtype_b_vlc;
|
||||||
static VLC cbpc_b_vlc;
|
static VLC cbpc_b_vlc;
|
||||||
|
|
||||||
void init_vlc_rl(RLTable *rl, int use_static)
|
|
||||||
{
|
|
||||||
int i, q;
|
|
||||||
|
|
||||||
/* Return if static table is already initialized */
|
|
||||||
if(use_static && rl->rl_vlc[0])
|
|
||||||
return;
|
|
||||||
|
|
||||||
init_vlc(&rl->vlc, 9, rl->n + 1,
|
|
||||||
&rl->table_vlc[0][1], 4, 2,
|
|
||||||
&rl->table_vlc[0][0], 4, 2, use_static);
|
|
||||||
|
|
||||||
|
|
||||||
for(q=0; q<32; q++){
|
|
||||||
int qmul= q*2;
|
|
||||||
int qadd= (q-1)|1;
|
|
||||||
|
|
||||||
if(q==0){
|
|
||||||
qmul=1;
|
|
||||||
qadd=0;
|
|
||||||
}
|
|
||||||
if(use_static)
|
|
||||||
rl->rl_vlc[q]= av_mallocz_static(rl->vlc.table_size*sizeof(RL_VLC_ELEM));
|
|
||||||
else
|
|
||||||
rl->rl_vlc[q]= av_malloc(rl->vlc.table_size*sizeof(RL_VLC_ELEM));
|
|
||||||
for(i=0; i<rl->vlc.table_size; i++){
|
|
||||||
int code= rl->vlc.table[i][0];
|
|
||||||
int len = rl->vlc.table[i][1];
|
|
||||||
int level, run;
|
|
||||||
|
|
||||||
if(len==0){ // illegal code
|
|
||||||
run= 66;
|
|
||||||
level= MAX_LEVEL;
|
|
||||||
}else if(len<0){ //more bits needed
|
|
||||||
run= 0;
|
|
||||||
level= code;
|
|
||||||
}else{
|
|
||||||
if(code==rl->n){ //esc
|
|
||||||
run= 66;
|
|
||||||
level= 0;
|
|
||||||
}else{
|
|
||||||
run= rl->table_run [code] + 1;
|
|
||||||
level= rl->table_level[code] * qmul + qadd;
|
|
||||||
if(code >= rl->last) run+=192;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rl->rl_vlc[q][i].len= len;
|
|
||||||
rl->rl_vlc[q][i].level= level;
|
|
||||||
rl->rl_vlc[q][i].run= run;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* init vlcs */
|
/* init vlcs */
|
||||||
|
|
||||||
/* XXX: find a better solution to handle static init */
|
/* XXX: find a better solution to handle static init */
|
||||||
|
@ -742,6 +742,59 @@ void init_rl(RLTable *rl, uint8_t static_store[2][2*MAX_RUN + MAX_LEVEL + 3])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_vlc_rl(RLTable *rl, int use_static)
|
||||||
|
{
|
||||||
|
int i, q;
|
||||||
|
|
||||||
|
/* Return if static table is already initialized */
|
||||||
|
if(use_static && rl->rl_vlc[0])
|
||||||
|
return;
|
||||||
|
|
||||||
|
init_vlc(&rl->vlc, 9, rl->n + 1,
|
||||||
|
&rl->table_vlc[0][1], 4, 2,
|
||||||
|
&rl->table_vlc[0][0], 4, 2, use_static);
|
||||||
|
|
||||||
|
|
||||||
|
for(q=0; q<32; q++){
|
||||||
|
int qmul= q*2;
|
||||||
|
int qadd= (q-1)|1;
|
||||||
|
|
||||||
|
if(q==0){
|
||||||
|
qmul=1;
|
||||||
|
qadd=0;
|
||||||
|
}
|
||||||
|
if(use_static)
|
||||||
|
rl->rl_vlc[q]= av_mallocz_static(rl->vlc.table_size*sizeof(RL_VLC_ELEM));
|
||||||
|
else
|
||||||
|
rl->rl_vlc[q]= av_malloc(rl->vlc.table_size*sizeof(RL_VLC_ELEM));
|
||||||
|
for(i=0; i<rl->vlc.table_size; i++){
|
||||||
|
int code= rl->vlc.table[i][0];
|
||||||
|
int len = rl->vlc.table[i][1];
|
||||||
|
int level, run;
|
||||||
|
|
||||||
|
if(len==0){ // illegal code
|
||||||
|
run= 66;
|
||||||
|
level= MAX_LEVEL;
|
||||||
|
}else if(len<0){ //more bits needed
|
||||||
|
run= 0;
|
||||||
|
level= code;
|
||||||
|
}else{
|
||||||
|
if(code==rl->n){ //esc
|
||||||
|
run= 66;
|
||||||
|
level= 0;
|
||||||
|
}else{
|
||||||
|
run= rl->table_run [code] + 1;
|
||||||
|
level= rl->table_level[code] * qmul + qadd;
|
||||||
|
if(code >= rl->last) run+=192;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rl->rl_vlc[q][i].len= len;
|
||||||
|
rl->rl_vlc[q][i].level= level;
|
||||||
|
rl->rl_vlc[q][i].run= run;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* draw the edges of width 'w' of an image of size width, height */
|
/* draw the edges of width 'w' of an image of size width, height */
|
||||||
//FIXME check that this is ok for mpeg4 interlaced
|
//FIXME check that this is ok for mpeg4 interlaced
|
||||||
static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w)
|
static void draw_edges_c(uint8_t *buf, int wrap, int width, int height, int w)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user