comparison motion_est.c @ 233:3f5b72726118 libavcodec

- More work on preliminary bit rate control, just to be able to get an average variance for picture's MBs so we can adjust qscale on the MB layer.
author pulento
date Sun, 10 Feb 2002 06:10:50 +0000
parents b640ec5948b0
children 16cd8a9c4da4
comparison
equal deleted inserted replaced
232:b640ec5948b0 233:3f5b72726118
398 int *mx_ptr, int *my_ptr) 398 int *mx_ptr, int *my_ptr)
399 { 399 {
400 UINT8 *pix, *ppix; 400 UINT8 *pix, *ppix;
401 int sum, varc, vard, mx, my, range, dmin, xx, yy; 401 int sum, varc, vard, mx, my, range, dmin, xx, yy;
402 int xmin, ymin, xmax, ymax; 402 int xmin, ymin, xmax, ymax;
403 403
404 range = 8 * (1 << (s->f_code - 1)); 404 range = 8 * (1 << (s->f_code - 1));
405 /* XXX: temporary kludge to avoid overflow for msmpeg4 */ 405 /* XXX: temporary kludge to avoid overflow for msmpeg4 */
406 if (s->out_format == FMT_H263 && !s->h263_msmpeg4) 406 if (s->out_format == FMT_H263 && !s->h263_msmpeg4)
407 range = range * 2; 407 range = range * 2;
408 408
456 vard = pix_norm(pix, ppix, s->linesize); 456 vard = pix_norm(pix, ppix, s->linesize);
457 457
458 vard = vard >> 8; 458 vard = vard >> 8;
459 sum = sum >> 8; 459 sum = sum >> 8;
460 varc = (varc >> 8) - (sum * sum); 460 varc = (varc >> 8) - (sum * sum);
461
462 s->avg_mb_var += varc;
463
461 #if 0 464 #if 0
462 printf("varc=%d (sum=%d) vard=%d mx=%d my=%d\n", 465 printf("varc=%4d avg_var=%4d (sum=%4d) vard=%4d mx=%2d my=%2d\n",
463 varc, sum, vard, mx - xx, my - yy); 466 varc, s->avg_mb_var, sum, vard, mx - xx, my - yy);
464 #endif 467 #endif
465 if (vard <= 64 || vard < varc) { 468 if (vard <= 64 || vard < varc) {
466 if (s->full_search != ME_ZERO) { 469 if (s->full_search != ME_ZERO) {
467 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax); 470 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax);
468 } else { 471 } else {