Mercurial > libavcodec.hg
comparison motion_est.c @ 320:cda7d0857baf libavcodec
- ME setting moved to AVCodecContext/MpegEncContext, no longer a global.
- EPZS ME algo used by default.
- HQ flag activated for ffmpeg.
- Cosmetics ...
author | pulento |
---|---|
date | Sun, 14 Apr 2002 18:57:51 +0000 |
parents | 5753d57e7e6b |
children | 9c6f056f0e41 |
comparison
equal
deleted
inserted
replaced
319:3ef1cc75d5f5 | 320:cda7d0857baf |
---|---|
592 CHECK_MV(P[3][0]>>shift, P[3][1]>>shift) | 592 CHECK_MV(P[3][0]>>shift, P[3][1]>>shift) |
593 } | 593 } |
594 CHECK_MV(P[0][0]>>shift, P[0][1]>>shift) | 594 CHECK_MV(P[0][0]>>shift, P[0][1]>>shift) |
595 | 595 |
596 //check(best[0],best[1],0, b0) | 596 //check(best[0],best[1],0, b0) |
597 if(s->full_search==ME_EPZS) | 597 if(s->me_method==ME_EPZS) |
598 dmin= small_diamond_search(s, best, dmin, new_pic, old_pic, pic_stride, | 598 dmin= small_diamond_search(s, best, dmin, new_pic, old_pic, pic_stride, |
599 pred_x, pred_y, mv_penalty, quant, xmin, ymin, xmax, ymax, shift); | 599 pred_x, pred_y, mv_penalty, quant, xmin, ymin, xmax, ymax, shift); |
600 else | 600 else |
601 dmin= snake_search(s, best, dmin, new_pic, old_pic, pic_stride, | 601 dmin= snake_search(s, best, dmin, new_pic, old_pic, pic_stride, |
602 pred_x, pred_y, mv_penalty, quant, xmin, ymin, xmax, ymax, shift); | 602 pred_x, pred_y, mv_penalty, quant, xmin, ymin, xmax, ymax, shift); |
823 int rel_xmin, rel_ymin, rel_xmax, rel_ymax; | 823 int rel_xmin, rel_ymin, rel_xmax, rel_ymax; |
824 int pred_x=0, pred_y=0; | 824 int pred_x=0, pred_y=0; |
825 int P[6][2]; | 825 int P[6][2]; |
826 const int shift= 1+s->quarter_sample; | 826 const int shift= 1+s->quarter_sample; |
827 int mb_type=0; | 827 int mb_type=0; |
828 | 828 //static int skip=0; |
829 range = 8 * (1 << (s->f_code - 1)); | 829 range = 8 * (1 << (s->f_code - 1)); |
830 /* XXX: temporary kludge to avoid overflow for msmpeg4 */ | 830 /* XXX: temporary kludge to avoid overflow for msmpeg4 */ |
831 if (s->out_format == FMT_H263 && !s->h263_msmpeg4) | 831 if (s->out_format == FMT_H263 && !s->h263_msmpeg4) |
832 range = range * 2; | 832 range = range * 2; |
833 | 833 |
849 xmin = 0; | 849 xmin = 0; |
850 ymin = 0; | 850 ymin = 0; |
851 xmax = s->mb_width*16 - 16; | 851 xmax = s->mb_width*16 - 16; |
852 ymax = s->mb_height*16 - 16; | 852 ymax = s->mb_height*16 - 16; |
853 } | 853 } |
854 switch(s->full_search) { | 854 switch(s->me_method) { |
855 case ME_ZERO: | 855 case ME_ZERO: |
856 default: | 856 default: |
857 no_motion_search(s, &mx, &my); | 857 no_motion_search(s, &mx, &my); |
858 dmin = 0; | 858 dmin = 0; |
859 break; | 859 break; |
997 | 997 |
998 s->mb_var[s->mb_width * mb_y + mb_x] = varc; | 998 s->mb_var[s->mb_width * mb_y + mb_x] = varc; |
999 s->avg_mb_var+= varc; | 999 s->avg_mb_var+= varc; |
1000 s->mc_mb_var += vard; | 1000 s->mc_mb_var += vard; |
1001 | 1001 |
1002 | |
1002 #if 0 | 1003 #if 0 |
1003 printf("varc=%4d avg_var=%4d (sum=%4d) vard=%4d mx=%2d my=%2d\n", | 1004 printf("varc=%4d avg_var=%4d (sum=%4d) vard=%4d mx=%2d my=%2d\n", |
1004 varc, s->avg_mb_var, sum, vard, mx - xx, my - yy); | 1005 varc, s->avg_mb_var, sum, vard, mx - xx, my - yy); |
1005 #endif | 1006 #endif |
1006 if(s->flags&CODEC_FLAG_HQ){ | 1007 if(s->flags&CODEC_FLAG_HQ){ |
1014 my = my*2 - mb_y*32; | 1015 my = my*2 - mb_y*32; |
1015 } | 1016 } |
1016 }else{ | 1017 }else{ |
1017 if (vard <= 64 || vard < varc) { | 1018 if (vard <= 64 || vard < varc) { |
1018 mb_type|= MB_TYPE_INTER; | 1019 mb_type|= MB_TYPE_INTER; |
1019 if (s->full_search != ME_ZERO) { | 1020 if (s->me_method != ME_ZERO) { |
1020 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax, pred_x, pred_y); | 1021 halfpel_motion_search(s, &mx, &my, dmin, xmin, ymin, xmax, ymax, pred_x, pred_y); |
1021 } else { | 1022 } else { |
1022 mx -= 16 * mb_x; | 1023 mx -= 16 * mb_x; |
1023 my -= 16 * mb_y; | 1024 my -= 16 * mb_y; |
1024 } | 1025 } |
1026 #if 0 | |
1027 if (vard < 10) { | |
1028 skip++; | |
1029 fprintf(stderr,"\nEarly skip: %d vard: %2d varc: %5d dmin: %d", | |
1030 skip, vard, varc, dmin); | |
1031 } | |
1032 #endif | |
1025 }else{ | 1033 }else{ |
1026 mb_type|= MB_TYPE_INTRA; | 1034 mb_type|= MB_TYPE_INTRA; |
1027 mx = 0;//mx*2 - 32 * mb_x; | 1035 mx = 0;//mx*2 - 32 * mb_x; |
1028 my = 0;//my*2 - 32 * mb_y; | 1036 my = 0;//my*2 - 32 * mb_y; |
1029 } | 1037 } |