diff options
Diffstat (limited to 'libavcodec/ituh263enc.c')
-rw-r--r-- | libavcodec/ituh263enc.c | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c index 313f5f3e59..ee09f2974c 100644 --- a/libavcodec/ituh263enc.c +++ b/libavcodec/ituh263enc.c @@ -5,20 +5,20 @@ * Copyright (c) 2001 Juan J. Sierralta P * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * Libav is distributed in the hope that it will be useful, + * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software + * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ @@ -44,7 +44,7 @@ /** * Table of number of bits a motion vector component needs. */ -static uint8_t mv_penalty[MAX_FCODE+1][MAX_MV*2+1]; +static uint8_t mv_penalty[MAX_FCODE+1][MAX_DMV*2+1]; /** * Minimal fcode that a motion vector component would need. @@ -89,7 +89,7 @@ static const uint8_t wrong_run[102] = { av_const int ff_h263_aspect_to_info(AVRational aspect){ int i; - if(aspect.num==0) aspect= (AVRational){1,1}; + if(aspect.num==0 || aspect.den==0) aspect= (AVRational){1,1}; for(i=1; i<6; i++){ if(av_cmp_q(ff_h263_pixel_aspect[i], aspect) == 0){ @@ -227,19 +227,11 @@ void ff_h263_encode_picture_header(MpegEncContext * s, int picture_number) if(s->h263_slice_structured){ put_bits(&s->pb, 1, 1); - assert(s->mb_x == 0 && s->mb_y == 0); + av_assert1(s->mb_x == 0 && s->mb_y == 0); ff_h263_encode_mba(s); put_bits(&s->pb, 1, 1); } - - if(s->h263_aic){ - s->y_dc_scale_table= - s->c_dc_scale_table= ff_aic_dc_scale_table; - }else{ - s->y_dc_scale_table= - s->c_dc_scale_table= ff_mpeg1_dc_scale_table; - } } /** @@ -394,7 +386,7 @@ static void h263_encode_block(MpegEncContext * s, int16_t * block, int n) put_bits(&s->pb, 1, last); put_bits(&s->pb, 6, run); - assert(slevel != 0); + av_assert2(slevel != 0); if(level < 128) put_sbits(&s->pb, 8, slevel); @@ -415,7 +407,7 @@ static void h263_encode_block(MpegEncContext * s, int16_t * block, int n) } /* Encode MV differences on H.263+ with Unrestricted MV mode */ -static void h263p_encode_umotion(MpegEncContext * s, int val) +static void h263p_encode_umotion(PutBitContext *pb, int val) { short sval = 0; short i = 0; @@ -425,11 +417,11 @@ static void h263p_encode_umotion(MpegEncContext * s, int val) int tcode; if ( val == 0) - put_bits(&s->pb, 1, 1); + put_bits(pb, 1, 1); else if (val == 1) - put_bits(&s->pb, 3, 0); + put_bits(pb, 3, 0); else if (val == -1) - put_bits(&s->pb, 3, 2); + put_bits(pb, 3, 2); else { sval = ((val < 0) ? (short)(-val):(short)val); @@ -448,7 +440,7 @@ static void h263p_encode_umotion(MpegEncContext * s, int val) i--; } code = ((code << 1) | (val < 0)) << 1; - put_bits(&s->pb, (2*n_bits)+1, code); + put_bits(pb, (2*n_bits)+1, code); } } @@ -505,8 +497,8 @@ void ff_h263_encode_mb(MpegEncContext * s, motion_y - pred_y, 1); } else { - h263p_encode_umotion(s, motion_x - pred_x); - h263p_encode_umotion(s, motion_y - pred_y); + h263p_encode_umotion(&s->pb, motion_x - pred_x); + h263p_encode_umotion(&s->pb, motion_y - pred_y); if (((motion_x - pred_x) == 1) && ((motion_y - pred_y) == 1)) /* To prevent Start Code emulation */ put_bits(&s->pb,1,1); @@ -534,8 +526,8 @@ void ff_h263_encode_mb(MpegEncContext * s, motion_y - pred_y, 1); } else { - h263p_encode_umotion(s, motion_x - pred_x); - h263p_encode_umotion(s, motion_y - pred_y); + h263p_encode_umotion(&s->pb, motion_x - pred_x); + h263p_encode_umotion(&s->pb, motion_y - pred_y); if (((motion_x - pred_x) == 1) && ((motion_y - pred_y) == 1)) /* To prevent Start Code emulation */ put_bits(&s->pb,1,1); @@ -547,7 +539,7 @@ void ff_h263_encode_mb(MpegEncContext * s, s->mv_bits+= get_bits_diff(s); } } else { - assert(s->mb_intra); + av_assert2(s->mb_intra); cbp = 0; if (s->h263_aic) { @@ -651,14 +643,14 @@ void ff_h263_encode_mb(MpegEncContext * s, } } -void ff_h263_encode_motion(MpegEncContext * s, int val, int f_code) +void ff_h263_encode_motion(PutBitContext *pb, int val, int f_code) { int range, bit_size, sign, code, bits; if (val == 0) { /* zero vector */ code = 0; - put_bits(&s->pb, ff_mvtab[code][1], ff_mvtab[code][0]); + put_bits(pb, ff_mvtab[code][1], ff_mvtab[code][0]); } else { bit_size = f_code - 1; range = 1 << bit_size; @@ -672,9 +664,9 @@ void ff_h263_encode_motion(MpegEncContext * s, int val, int f_code) code = (val >> bit_size) + 1; bits = val & (range - 1); - put_bits(&s->pb, ff_mvtab[code][1] + 1, (ff_mvtab[code][0] << 1) | sign); + put_bits(pb, ff_mvtab[code][1] + 1, (ff_mvtab[code][0] << 1) | sign); if (bit_size > 0) { - put_bits(&s->pb, bit_size, bits); + put_bits(pb, bit_size, bits); } } } @@ -685,7 +677,7 @@ static av_cold void init_mv_penalty_and_fcode(MpegEncContext *s) int mv; for(f_code=1; f_code<=MAX_FCODE; f_code++){ - for(mv=-MAX_MV; mv<=MAX_MV; mv++){ + for(mv=-MAX_DMV; mv<=MAX_DMV; mv++){ int len; if(mv==0) len= ff_mvtab[0][1]; @@ -706,7 +698,7 @@ static av_cold void init_mv_penalty_and_fcode(MpegEncContext *s) } } - mv_penalty[f_code][mv+MAX_MV]= len; + mv_penalty[f_code][mv+MAX_DMV]= len; } } @@ -726,8 +718,8 @@ static av_cold void init_uni_h263_rl_tab(RLTable *rl, uint32_t *bits_tab, { int slevel, run, last; - assert(MAX_LEVEL >= 64); - assert(MAX_RUN >= 63); + av_assert0(MAX_LEVEL >= 64); + av_assert0(MAX_RUN >= 63); for(slevel=-64; slevel<64; slevel++){ if(slevel==0) continue; @@ -816,12 +808,15 @@ av_cold void ff_h263_encode_init(MpegEncContext *s) s->min_qcoeff= -127; s->max_qcoeff= 127; } - s->y_dc_scale_table= - s->c_dc_scale_table= ff_mpeg1_dc_scale_table; break; default: //nothing needed - default table already set in mpegvideo.c s->min_qcoeff= -127; s->max_qcoeff= 127; + } + if(s->h263_aic){ + s->y_dc_scale_table= + s->c_dc_scale_table= ff_aic_dc_scale_table; + }else{ s->y_dc_scale_table= s->c_dc_scale_table= ff_mpeg1_dc_scale_table; } |