Browse Source

cleanup

Originally committed as revision 2562 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 22 years ago
parent
commit
cdb4e730e4
2 changed files with 23 additions and 28 deletions
  1. +22
    -27
      libavcodec/h263.c
  2. +1
    -1
      libavcodec/mpegvideo.h

+ 22
- 27
libavcodec/h263.c View File

@@ -1236,7 +1236,7 @@ void h263_encode_mb(MpegEncContext * s,
} }
#endif #endif


int ff_h263_loop_filter(MpegEncContext * s){
void ff_h263_loop_filter(MpegEncContext * s){
int qp_c; int qp_c;
const int linesize = s->linesize; const int linesize = s->linesize;
const int uvlinesize= s->uvlinesize; const int uvlinesize= s->uvlinesize;
@@ -3572,7 +3572,11 @@ static void preview_obmc(MpegEncContext *s){
}else{ }else{
get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1); get_vlc2(&s->gb, cbpy_vlc.table, CBPY_VLC_BITS, 1);
if (cbpc & 8) { if (cbpc & 8) {
skip_bits(&s->gb, 2);
if(s->modified_quant){
if(get_bits1(&s->gb)) skip_bits(&s->gb, 1);
else skip_bits(&s->gb, 5);
}else
skip_bits(&s->gb, 2);
} }
if ((cbpc & 16) == 0) { if ((cbpc & 16) == 0) {
@@ -3624,12 +3628,24 @@ end:
s->gb= gb; s->gb= gb;
} }


static void h263_decode_dquant(MpegEncContext *s){
static const int8_t quant_tab[4] = { -1, -2, 1, 2 };

if(s->modified_quant){
if(get_bits1(&s->gb))
s->qscale= modified_quant_tab[get_bits1(&s->gb)][ s->qscale ];
else
s->qscale= get_bits(&s->gb, 5);
}else
s->qscale += quant_tab[get_bits(&s->gb, 2)];
ff_set_qscale(s, s->qscale);
}

int ff_h263_decode_mb(MpegEncContext *s, int ff_h263_decode_mb(MpegEncContext *s,
DCTELEM block[6][64]) DCTELEM block[6][64])
{ {
int cbpc, cbpy, i, cbp, pred_x, pred_y, mx, my, dquant; int cbpc, cbpy, i, cbp, pred_x, pred_y, mx, my, dquant;
int16_t *mot_val; int16_t *mot_val;
static int8_t quant_tab[4] = { -1, -2, 1, 2 };
const int xy= s->mb_x + s->mb_y * s->mb_stride; const int xy= s->mb_x + s->mb_y * s->mb_stride;
assert(!s->h263_pred); assert(!s->h263_pred);
@@ -3668,14 +3684,7 @@ int ff_h263_decode_mb(MpegEncContext *s,
cbp = (cbpc & 3) | (cbpy << 2); cbp = (cbpc & 3) | (cbpy << 2);
if (dquant) { if (dquant) {
if(s->modified_quant){
if(get_bits1(&s->gb))
s->qscale= modified_quant_tab[get_bits1(&s->gb)][ s->qscale ];
else
s->qscale= get_bits(&s->gb, 5);
}else
s->qscale += quant_tab[get_bits(&s->gb, 2)];
ff_set_qscale(s, s->qscale);
h263_decode_dquant(s);
} }
s->mv_dir = MV_DIR_FORWARD; s->mv_dir = MV_DIR_FORWARD;
@@ -3783,14 +3792,7 @@ int ff_h263_decode_mb(MpegEncContext *s,
assert(!s->mb_intra); assert(!s->mb_intra);


if(IS_QUANT(mb_type)){ if(IS_QUANT(mb_type)){
if(s->modified_quant){ //FIXME factorize
if(get_bits1(&s->gb))
s->qscale= modified_quant_tab[get_bits1(&s->gb)][ s->qscale ];
else
s->qscale= get_bits(&s->gb, 5);
}else
s->qscale += quant_tab[get_bits(&s->gb, 2)];
ff_set_qscale(s, s->qscale);
h263_decode_dquant(s);
} }


if(IS_DIRECT(mb_type)){ if(IS_DIRECT(mb_type)){
@@ -3857,14 +3859,7 @@ intra:
} }
cbp = (cbpc & 3) | (cbpy << 2); cbp = (cbpc & 3) | (cbpy << 2);
if (dquant) { if (dquant) {
if(s->modified_quant){
if(get_bits1(&s->gb))
s->qscale= modified_quant_tab[get_bits1(&s->gb)][ s->qscale ];
else
s->qscale= get_bits(&s->gb, 5);
}else
s->qscale += quant_tab[get_bits(&s->gb, 2)];
ff_set_qscale(s, s->qscale);
h263_decode_dquant(s);
} }
} }




+ 1
- 1
libavcodec/mpegvideo.h View File

@@ -857,7 +857,7 @@ int h263_decode_picture_header(MpegEncContext *s);
int ff_h263_decode_gob_header(MpegEncContext *s); int ff_h263_decode_gob_header(MpegEncContext *s);
int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb); int ff_mpeg4_decode_picture_header(MpegEncContext * s, GetBitContext *gb);
void ff_h263_update_motion_val(MpegEncContext * s); void ff_h263_update_motion_val(MpegEncContext * s);
int ff_h263_loop_filter(MpegEncContext * s);
void ff_h263_loop_filter(MpegEncContext * s);
void ff_set_qscale(MpegEncContext * s, int qscale); void ff_set_qscale(MpegEncContext * s, int qscale);






Loading…
Cancel
Save