comparison h263.c @ 1644:835cf346975e libavcodec

h263 loop filter fixed h263 modified quantization CODEC_FLAG_OBMC
author michael
date Mon, 01 Dec 2003 15:23:14 +0000
parents 0226cad80fc2
children c3c166ead03a
comparison
equal deleted inserted replaced
1643:9bb07bd315d9 1644:835cf346975e
235 put_bits(&s->pb,3,6); /* Custom Source Format */ 235 put_bits(&s->pb,3,6); /* Custom Source Format */
236 else 236 else
237 put_bits(&s->pb, 3, format); 237 put_bits(&s->pb, 3, format);
238 238
239 put_bits(&s->pb,1,0); /* Custom PCF: off */ 239 put_bits(&s->pb,1,0); /* Custom PCF: off */
240 s->umvplus = s->unrestricted_mv;
241 put_bits(&s->pb, 1, s->umvplus); /* Unrestricted Motion Vector */ 240 put_bits(&s->pb, 1, s->umvplus); /* Unrestricted Motion Vector */
242 put_bits(&s->pb,1,0); /* SAC: off */ 241 put_bits(&s->pb,1,0); /* SAC: off */
243 put_bits(&s->pb,1,s->obmc); /* Advanced Prediction Mode */ 242 put_bits(&s->pb,1,s->obmc); /* Advanced Prediction Mode */
244 put_bits(&s->pb,1,s->h263_aic); /* Advanced Intra Coding */ 243 put_bits(&s->pb,1,s->h263_aic); /* Advanced Intra Coding */
245 put_bits(&s->pb,1,0); /* Deblocking Filter: off */ 244 put_bits(&s->pb,1,s->loop_filter); /* Deblocking Filter */
246 put_bits(&s->pb,1,0); /* Slice Structured: off */ 245 put_bits(&s->pb,1,0); /* Slice Structured: off */
247 put_bits(&s->pb,1,0); /* Reference Picture Selection: off */ 246 put_bits(&s->pb,1,0); /* Reference Picture Selection: off */
248 put_bits(&s->pb,1,0); /* Independent Segment Decoding: off */ 247 put_bits(&s->pb,1,0); /* Independent Segment Decoding: off */
249 put_bits(&s->pb,1,s->alt_inter_vlc); /* Alternative Inter VLC */ 248 put_bits(&s->pb,1,s->alt_inter_vlc); /* Alternative Inter VLC */
250 put_bits(&s->pb,1,0); /* Modified Quantization: off */ 249 put_bits(&s->pb,1,s->modified_quant); /* Modified Quantization: */
251 put_bits(&s->pb,1,1); /* "1" to prevent start code emulation */ 250 put_bits(&s->pb,1,1); /* "1" to prevent start code emulation */
252 put_bits(&s->pb,3,0); /* Reserved */ 251 put_bits(&s->pb,3,0); /* Reserved */
253 252
254 put_bits(&s->pb, 3, s->pict_type == P_TYPE); 253 put_bits(&s->pb, 3, s->pict_type == P_TYPE);
255 254
277 } 276 }
278 277
279 /* Unlimited Unrestricted Motion Vectors Indicator (UUI) */ 278 /* Unlimited Unrestricted Motion Vectors Indicator (UUI) */
280 if (s->umvplus) 279 if (s->umvplus)
281 // put_bits(&s->pb,1,1); /* Limited according tables of Annex D */ 280 // put_bits(&s->pb,1,1); /* Limited according tables of Annex D */
281 //FIXME check actual requested range
282 put_bits(&s->pb,2,1); /* unlimited */ 282 put_bits(&s->pb,2,1); /* unlimited */
283 283
284 put_bits(&s->pb, 5, s->qscale); 284 put_bits(&s->pb, 5, s->qscale);
285 } 285 }
286 286
1231 s->i_count++; 1231 s->i_count++;
1232 } 1232 }
1233 } 1233 }
1234 } 1234 }
1235 #endif 1235 #endif
1236
1237 int ff_h263_loop_filter(MpegEncContext * s){
1238 int qp_c;
1239 const int linesize = s->linesize;
1240 const int uvlinesize= s->uvlinesize;
1241 const int xy = s->mb_y * s->mb_stride + s->mb_x;
1242 uint8_t *dest_y = s->dest[0];
1243 uint8_t *dest_cb= s->dest[1];
1244 uint8_t *dest_cr= s->dest[2];
1245
1246 // if(s->pict_type==B_TYPE && !s->readable) return;
1247
1248 /*
1249 Diag Top
1250 Left Center
1251 */
1252 if(!IS_SKIP(s->current_picture.mb_type[xy])){
1253 qp_c= s->qscale;
1254 s->dsp.h263_v_loop_filter(dest_y+8*linesize , linesize, qp_c);
1255 s->dsp.h263_v_loop_filter(dest_y+8*linesize+8, linesize, qp_c);
1256 }else
1257 qp_c= 0;
1258
1259 if(s->mb_y){
1260 int qp_dt, qp_t, qp_tc;
1261
1262 if(IS_SKIP(s->current_picture.mb_type[xy-s->mb_stride]))
1263 qp_t=0;
1264 else
1265 qp_t= s->current_picture.qscale_table[xy-s->mb_stride];
1266
1267 if(qp_c)
1268 qp_tc= qp_c;
1269 else
1270 qp_tc= qp_t;
1271
1272 if(qp_tc){
1273 const int chroma_qp= s->chroma_qscale_table[qp_tc];
1274 s->dsp.h263_v_loop_filter(dest_y , linesize, qp_tc);
1275 s->dsp.h263_v_loop_filter(dest_y+8, linesize, qp_tc);
1276
1277 s->dsp.h263_v_loop_filter(dest_cb , uvlinesize, chroma_qp);
1278 s->dsp.h263_v_loop_filter(dest_cr , uvlinesize, chroma_qp);
1279 }
1280
1281 if(qp_t)
1282 s->dsp.h263_h_loop_filter(dest_y-8*linesize+8 , linesize, qp_t);
1283
1284 if(s->mb_x){
1285 if(qp_t || IS_SKIP(s->current_picture.mb_type[xy-1-s->mb_stride]))
1286 qp_dt= qp_t;
1287 else
1288 qp_dt= s->current_picture.qscale_table[xy-1-s->mb_stride];
1289
1290 if(qp_dt){
1291 const int chroma_qp= s->chroma_qscale_table[qp_dt];
1292 s->dsp.h263_h_loop_filter(dest_y -8*linesize , linesize, qp_dt);
1293 s->dsp.h263_h_loop_filter(dest_cb-8*uvlinesize, uvlinesize, chroma_qp);
1294 s->dsp.h263_h_loop_filter(dest_cb-8*uvlinesize, uvlinesize, chroma_qp);
1295 }
1296 }
1297 }
1298
1299 if(qp_c){
1300 s->dsp.h263_h_loop_filter(dest_y +8, linesize, qp_c);
1301 if(s->mb_y + 1 == s->mb_height)
1302 s->dsp.h263_h_loop_filter(dest_y+8*linesize+8, linesize, qp_c);
1303 }
1304
1305 if(s->mb_x){
1306 int qp_lc;
1307 if(qp_c || IS_SKIP(s->current_picture.mb_type[xy-1]))
1308 qp_lc= qp_c;
1309 else
1310 qp_lc= s->current_picture.qscale_table[xy-1];
1311
1312 if(qp_lc){
1313 s->dsp.h263_h_loop_filter(dest_y, linesize, qp_lc);
1314 if(s->mb_y + 1 == s->mb_height){
1315 const int chroma_qp= s->chroma_qscale_table[qp_lc];
1316 s->dsp.h263_h_loop_filter(dest_y +8* linesize, linesize, qp_lc);
1317 s->dsp.h263_h_loop_filter(dest_cb , uvlinesize, chroma_qp);
1318 s->dsp.h263_h_loop_filter(dest_cr , uvlinesize, chroma_qp);
1319 }
1320 }
1321 }
1322 }
1236 1323
1237 static int h263_pred_dc(MpegEncContext * s, int n, uint16_t **dc_val_ptr) 1324 static int h263_pred_dc(MpegEncContext * s, int n, uint16_t **dc_val_ptr)
1238 { 1325 {
1239 int x, y, wrap, a, c, pred_dc, scale; 1326 int x, y, wrap, a, c, pred_dc, scale;
1240 int16_t *dc_val, *ac_val; 1327 int16_t *dc_val, *ac_val;
2160 2247
2161 if (s->qscale < 1) 2248 if (s->qscale < 1)
2162 s->qscale = 1; 2249 s->qscale = 1;
2163 else if (s->qscale > 31) 2250 else if (s->qscale > 31)
2164 s->qscale = 31; 2251 s->qscale = 31;
2252
2253 s->chroma_qscale= s->chroma_qscale_table[s->qscale];
2165 2254
2166 s->y_dc_scale= s->y_dc_scale_table[ s->qscale ]; 2255 s->y_dc_scale= s->y_dc_scale_table[ s->qscale ];
2167 s->c_dc_scale= s->c_dc_scale_table[ s->qscale ]; 2256 s->c_dc_scale= s->c_dc_scale_table[ s->chroma_qscale ];
2168 } 2257 }
2169 2258
2170 /** 2259 /**
2171 * predicts the dc. 2260 * predicts the dc.
2172 * @param n block index (0-3 are luma, 4-5 are chroma) 2261 * @param n block index (0-3 are luma, 4-5 are chroma)
2655 s->gob_number = get_bits(&s->gb, 5); /* GN */ 2744 s->gob_number = get_bits(&s->gb, 5); /* GN */
2656 gfid = get_bits(&s->gb, 2); /* GFID */ 2745 gfid = get_bits(&s->gb, 2); /* GFID */
2657 s->qscale = get_bits(&s->gb, 5); /* GQUANT */ 2746 s->qscale = get_bits(&s->gb, 5); /* GQUANT */
2658 if(s->qscale==0) 2747 if(s->qscale==0)
2659 return -1; 2748 return -1;
2749 s->chroma_qscale= s->chroma_qscale_table[s->qscale];
2750
2660 s->mb_x= 0; 2751 s->mb_x= 0;
2661 s->mb_y= s->gob_index* s->gob_number; 2752 s->mb_y= s->gob_index* s->gob_number;
2662 if(s->mb_y >= s->mb_height) 2753 if(s->mb_y >= s->mb_height)
2663 return -1; 2754 return -1;
2664 #ifdef DEBUG 2755 #ifdef DEBUG
2818 s->mb_y= mb_num / s->mb_width; 2909 s->mb_y= mb_num / s->mb_width;
2819 2910
2820 if(s->shape != BIN_ONLY_SHAPE){ 2911 if(s->shape != BIN_ONLY_SHAPE){
2821 int qscale= get_bits(&s->gb, s->quant_precision); 2912 int qscale= get_bits(&s->gb, s->quant_precision);
2822 if(qscale) 2913 if(qscale)
2823 s->qscale= qscale; 2914 s->chroma_qscale=s->qscale= qscale;
2824 } 2915 }
2825 2916
2826 if(s->shape == RECT_SHAPE){ 2917 if(s->shape == RECT_SHAPE){
2827 header_extension= get_bits1(&s->gb); 2918 header_extension= get_bits1(&s->gb);
2828 } 2919 }
3300 3391
3301 mb_type= s->current_picture.mb_type[xy]; 3392 mb_type= s->current_picture.mb_type[xy];
3302 cbp = s->cbp_table[xy]; 3393 cbp = s->cbp_table[xy];
3303 3394
3304 if(s->current_picture.qscale_table[xy] != s->qscale){ 3395 if(s->current_picture.qscale_table[xy] != s->qscale){
3305 s->qscale= s->current_picture.qscale_table[xy]; 3396 s->chroma_qscale=s->qscale= s->current_picture.qscale_table[xy];
3306 s->y_dc_scale= s->y_dc_scale_table[ s->qscale ]; 3397 s->y_dc_scale= s->y_dc_scale_table[ s->qscale ];
3307 s->c_dc_scale= s->c_dc_scale_table[ s->qscale ]; 3398 s->c_dc_scale= s->c_dc_scale_table[ s->chroma_qscale ];
3308 } 3399 }
3309 3400
3310 if (s->pict_type == P_TYPE || s->pict_type==S_TYPE) { 3401 if (s->pict_type == P_TYPE || s->pict_type==S_TYPE) {
3311 int i; 3402 int i;
3312 for(i=0; i<4; i++){ 3403 for(i=0; i<4; i++){
3493 }else{ 3584 }else{
3494 s->current_picture.mb_type[xy]= MB_TYPE_SKIP | MB_TYPE_16x16 | MB_TYPE_L0; 3585 s->current_picture.mb_type[xy]= MB_TYPE_SKIP | MB_TYPE_16x16 | MB_TYPE_L0;
3495 s->mcsel=0; 3586 s->mcsel=0;
3496 s->mv[0][0][0] = 0; 3587 s->mv[0][0][0] = 0;
3497 s->mv[0][0][1] = 0; 3588 s->mv[0][0][1] = 0;
3498 s->mb_skiped = !s->obmc; 3589 s->mb_skiped = !(s->obmc | s->loop_filter);
3499 } 3590 }
3500 goto end; 3591 goto end;
3501 } 3592 }
3502 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2); 3593 cbpc = get_vlc2(&s->gb, inter_MCBPC_vlc.table, INTER_MCBPC_VLC_BITS, 2);
3503 //fprintf(stderr, "\tCBPC: %d", cbpc); 3594 //fprintf(stderr, "\tCBPC: %d", cbpc);
4438 4529
4439 if (get_bits1(&s->gb) != 0) { 4530 if (get_bits1(&s->gb) != 0) {
4440 av_log(s->avctx, AV_LOG_ERROR, "H263 PB frame not supported\n"); 4531 av_log(s->avctx, AV_LOG_ERROR, "H263 PB frame not supported\n");
4441 return -1; /* not PB frame */ 4532 return -1; /* not PB frame */
4442 } 4533 }
4443 s->qscale = get_bits(&s->gb, 5); 4534 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
4444 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */ 4535 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */
4445 4536
4446 s->width = width; 4537 s->width = width;
4447 s->height = height; 4538 s->height = height;
4448 } else { 4539 } else {
4457 /* OPPTYPE */ 4548 /* OPPTYPE */
4458 format = get_bits(&s->gb, 3); 4549 format = get_bits(&s->gb, 3);
4459 dprintf("ufep=1, format: %d\n", format); 4550 dprintf("ufep=1, format: %d\n", format);
4460 skip_bits(&s->gb,1); /* Custom PCF */ 4551 skip_bits(&s->gb,1); /* Custom PCF */
4461 s->umvplus = get_bits(&s->gb, 1); /* Unrestricted Motion Vector */ 4552 s->umvplus = get_bits(&s->gb, 1); /* Unrestricted Motion Vector */
4462 skip_bits1(&s->gb); /* Syntax-based Arithmetic Coding (SAC) */ 4553 if (get_bits1(&s->gb) != 0) {
4554 av_log(s->avctx, AV_LOG_ERROR, "Syntax-based Arithmetic Coding (SAC) not supported\n");
4555 }
4463 s->obmc= get_bits1(&s->gb); /* Advanced prediction mode */ 4556 s->obmc= get_bits1(&s->gb); /* Advanced prediction mode */
4464 s->unrestricted_mv = s->umvplus || s->obmc;
4465 s->h263_aic = get_bits1(&s->gb); /* Advanced Intra Coding (AIC) */ 4557 s->h263_aic = get_bits1(&s->gb); /* Advanced Intra Coding (AIC) */
4466 4558 s->loop_filter= get_bits1(&s->gb);
4467 if (get_bits1(&s->gb) != 0) { 4559 s->unrestricted_mv = s->umvplus || s->obmc || s->loop_filter;
4468 av_log(s->avctx, AV_LOG_ERROR, "Deblocking Filter not supported\n"); 4560
4469 }
4470 if (get_bits1(&s->gb) != 0) { 4561 if (get_bits1(&s->gb) != 0) {
4471 av_log(s->avctx, AV_LOG_ERROR, "Slice Structured not supported\n"); 4562 av_log(s->avctx, AV_LOG_ERROR, "Slice Structured not supported\n");
4472 } 4563 }
4473 if (get_bits1(&s->gb) != 0) { 4564 if (get_bits1(&s->gb) != 0) {
4474 av_log(s->avctx, AV_LOG_ERROR, "Reference Picture Selection not supported\n"); 4565 av_log(s->avctx, AV_LOG_ERROR, "Reference Picture Selection not supported\n");
4476 if (get_bits1(&s->gb) != 0) { 4567 if (get_bits1(&s->gb) != 0) {
4477 av_log(s->avctx, AV_LOG_ERROR, "Independent Segment Decoding not supported\n"); 4568 av_log(s->avctx, AV_LOG_ERROR, "Independent Segment Decoding not supported\n");
4478 } 4569 }
4479 s->alt_inter_vlc= get_bits1(&s->gb); 4570 s->alt_inter_vlc= get_bits1(&s->gb);
4480 s->modified_quant= get_bits1(&s->gb); 4571 s->modified_quant= get_bits1(&s->gb);
4572 if(s->modified_quant)
4573 s->chroma_qscale_table= ff_h263_chroma_qscale_table;
4481 4574
4482 skip_bits(&s->gb, 1); /* Prevent start code emulation */ 4575 skip_bits(&s->gb, 1); /* Prevent start code emulation */
4483 4576
4484 skip_bits(&s->gb, 3); /* Reserved */ 4577 skip_bits(&s->gb, 3); /* Reserved */
4485 } else if (ufep != 0) { 4578 } else if (ufep != 0) {
4537 skip_bits1(&s->gb); 4630 skip_bits1(&s->gb);
4538 } 4631 }
4539 } 4632 }
4540 4633
4541 s->qscale = get_bits(&s->gb, 5); 4634 s->qscale = get_bits(&s->gb, 5);
4635 s->chroma_qscale= s->chroma_qscale_table[s->qscale];
4542 } 4636 }
4543 /* PEI */ 4637 /* PEI */
4544 while (get_bits1(&s->gb) != 0) { 4638 while (get_bits1(&s->gb) != 0) {
4545 skip_bits(&s->gb, 8); 4639 skip_bits(&s->gb, 8);
4546 } 4640 }
4553 s->y_dc_scale_table= 4647 s->y_dc_scale_table=
4554 s->c_dc_scale_table= ff_mpeg1_dc_scale_table; 4648 s->c_dc_scale_table= ff_mpeg1_dc_scale_table;
4555 } 4649 }
4556 4650
4557 if(s->avctx->debug&FF_DEBUG_PICT_INFO){ 4651 if(s->avctx->debug&FF_DEBUG_PICT_INFO){
4558 av_log(s->avctx, AV_LOG_DEBUG, "qp:%d %c size:%d rnd:%d%s%s%s%s%s%s%s\n", 4652 av_log(s->avctx, AV_LOG_DEBUG, "qp:%d %c size:%d rnd:%d%s%s%s%s%s%s%s%s\n",
4559 s->qscale, av_get_pict_type_char(s->pict_type), 4653 s->qscale, av_get_pict_type_char(s->pict_type),
4560 s->gb.size_in_bits, 1-s->no_rounding, 4654 s->gb.size_in_bits, 1-s->no_rounding,
4561 s->obmc ? " AP" : "", 4655 s->obmc ? " AP" : "",
4562 s->umvplus ? " UMV" : "", 4656 s->umvplus ? " UMV" : "",
4563 s->h263_long_vectors ? " LONG" : "", 4657 s->h263_long_vectors ? " LONG" : "",
4564 s->h263_plus ? " +" : "", 4658 s->h263_plus ? " +" : "",
4565 s->h263_aic ? " AIC" : "", 4659 s->h263_aic ? " AIC" : "",
4566 s->alt_inter_vlc ? " AIV" : "", 4660 s->alt_inter_vlc ? " AIV" : "",
4567 s->modified_quant ? " MQ" : "" 4661 s->modified_quant ? " MQ" : "",
4662 s->loop_filter ? " LOOP" : ""
4568 ); 4663 );
4569 } 4664 }
4570 #if 1 4665 #if 1
4571 if (s->pict_type == I_TYPE && s->avctx->codec_tag == ff_get_fourcc("ZYGO")){ 4666 if (s->pict_type == I_TYPE && s->avctx->codec_tag == ff_get_fourcc("ZYGO")){
4572 int i,j; 4667 int i,j;
4893 } 4988 }
4894 } 4989 }
4895 4990
4896 s->progressive_sequence= get_bits1(gb)^1; 4991 s->progressive_sequence= get_bits1(gb)^1;
4897 if(!get_bits1(gb) && (s->avctx->debug & FF_DEBUG_PICT_INFO)) 4992 if(!get_bits1(gb) && (s->avctx->debug & FF_DEBUG_PICT_INFO))
4898 av_log(s->avctx, AV_LOG_ERROR, "OBMC not supported (very likely buggy encoder)\n"); /* OBMC Disable */ 4993 av_log(s->avctx, AV_LOG_INFO, "MPEG4 OBMC not supported (very likely buggy encoder)\n"); /* OBMC Disable */
4899 if (vo_ver_id == 1) { 4994 if (vo_ver_id == 1) {
4900 s->vol_sprite_usage = get_bits1(gb); /* vol_sprite_usage */ 4995 s->vol_sprite_usage = get_bits1(gb); /* vol_sprite_usage */
4901 } else { 4996 } else {
4902 s->vol_sprite_usage = get_bits(gb, 2); /* vol_sprite_usage */ 4997 s->vol_sprite_usage = get_bits(gb, 2); /* vol_sprite_usage */
4903 } 4998 }
5249 if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERROR, "sprite_brightness_change not supported\n"); 5344 if(s->sprite_brightness_change) av_log(s->avctx, AV_LOG_ERROR, "sprite_brightness_change not supported\n");
5250 if(s->vol_sprite_usage==STATIC_SPRITE) av_log(s->avctx, AV_LOG_ERROR, "static sprite not supported\n"); 5345 if(s->vol_sprite_usage==STATIC_SPRITE) av_log(s->avctx, AV_LOG_ERROR, "static sprite not supported\n");
5251 } 5346 }
5252 5347
5253 if (s->shape != BIN_ONLY_SHAPE) { 5348 if (s->shape != BIN_ONLY_SHAPE) {
5254 s->qscale = get_bits(gb, s->quant_precision); 5349 s->chroma_qscale= s->qscale = get_bits(gb, s->quant_precision);
5255 if(s->qscale==0){ 5350 if(s->qscale==0){
5256 av_log(s->avctx, AV_LOG_ERROR, "Error, header damaged or not MPEG4 header (qscale=0)\n"); 5351 av_log(s->avctx, AV_LOG_ERROR, "Error, header damaged or not MPEG4 header (qscale=0)\n");
5257 return -1; // makes no sense to continue, as there is nothing left from the image then 5352 return -1; // makes no sense to continue, as there is nothing left from the image then
5258 } 5353 }
5259 5354
5443 } 5538 }
5444 5539
5445 /* skip unknown header garbage */ 5540 /* skip unknown header garbage */
5446 skip_bits(&s->gb, 41); 5541 skip_bits(&s->gb, 41);
5447 5542
5448 s->qscale = get_bits(&s->gb, 5); 5543 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
5449 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */ 5544 skip_bits1(&s->gb); /* Continuous Presence Multipoint mode: off */
5450 5545
5451 /* PEI */ 5546 /* PEI */
5452 while (get_bits1(&s->gb) != 0) { 5547 while (get_bits1(&s->gb) != 0) {
5453 skip_bits(&s->gb, 8); 5548 skip_bits(&s->gb, 8);
5517 5612
5518 s->pict_type = I_TYPE + get_bits(&s->gb, 2); 5613 s->pict_type = I_TYPE + get_bits(&s->gb, 2);
5519 if (s->pict_type > P_TYPE) 5614 if (s->pict_type > P_TYPE)
5520 s->pict_type = P_TYPE; 5615 s->pict_type = P_TYPE;
5521 skip_bits1(&s->gb); /* deblocking flag */ 5616 skip_bits1(&s->gb); /* deblocking flag */
5522 s->qscale = get_bits(&s->gb, 5); 5617 s->chroma_qscale= s->qscale = get_bits(&s->gb, 5);
5523 5618
5524 s->h263_plus = 0; 5619 s->h263_plus = 0;
5525 5620
5526 s->unrestricted_mv = 1; 5621 s->unrestricted_mv = 1;
5527 s->h263_long_vectors = 0; 5622 s->h263_long_vectors = 0;