comparison h263.c @ 667:5446a41a00fe libavcodec

10l (field select readed at the wrong place ...)
author michaelni
date Fri, 13 Sep 2002 11:47:57 +0000
parents f5b8b5dd50d7
children b4bddbde44f3
comparison
equal deleted inserted replaced
666:f5b8b5dd50d7 667:5446a41a00fe
2838 2838
2839 if(!s->progressive_sequence){ 2839 if(!s->progressive_sequence){
2840 if(cbp) 2840 if(cbp)
2841 s->interlaced_dct= get_bits1(&s->gb); 2841 s->interlaced_dct= get_bits1(&s->gb);
2842 2842
2843 if(mb_type!=MB_TYPE_B_DIRECT && get_bits1(&s->gb)) 2843 if(mb_type!=MB_TYPE_B_DIRECT && get_bits1(&s->gb)){
2844 field_mv=1; 2844 field_mv=1;
2845 } 2845
2846 2846 if(mb_type!=MB_TYPE_B_BACKW){
2847 s->field_select[0][0]= get_bits1(&s->gb);
2848 s->field_select[0][1]= get_bits1(&s->gb);
2849 }
2850 if(mb_type!=MB_TYPE_B_FORW){
2851 s->field_select[1][0]= get_bits1(&s->gb);
2852 s->field_select[1][1]= get_bits1(&s->gb);
2853 }
2854 }
2855 }
2856
2857 s->mv_dir = 0;
2847 if(mb_type!=MB_TYPE_B_DIRECT && !field_mv){ 2858 if(mb_type!=MB_TYPE_B_DIRECT && !field_mv){
2848 s->mv_type= MV_TYPE_16X16; 2859 s->mv_type= MV_TYPE_16X16;
2849 if(mb_type!=MB_TYPE_B_BACKW){ 2860 if(mb_type!=MB_TYPE_B_BACKW){
2850 s->mv_dir = MV_DIR_FORWARD; 2861 s->mv_dir = MV_DIR_FORWARD;
2851 2862
2852 mx = h263_decode_motion(s, s->last_mv[0][0][0], s->f_code); 2863 mx = h263_decode_motion(s, s->last_mv[0][0][0], s->f_code);
2853 my = h263_decode_motion(s, s->last_mv[0][0][1], s->f_code); 2864 my = h263_decode_motion(s, s->last_mv[0][0][1], s->f_code);
2854 s->last_mv[0][1][0]= s->last_mv[0][0][0]= s->mv[0][0][0] = mx; 2865 s->last_mv[0][1][0]= s->last_mv[0][0][0]= s->mv[0][0][0] = mx;
2855 s->last_mv[0][1][1]= s->last_mv[0][0][1]= s->mv[0][0][1] = my; 2866 s->last_mv[0][1][1]= s->last_mv[0][0][1]= s->mv[0][0][1] = my;
2856 }else 2867 }
2857 s->mv_dir = 0;
2858 2868
2859 if(mb_type!=MB_TYPE_B_FORW){ 2869 if(mb_type!=MB_TYPE_B_FORW){
2860 s->mv_dir |= MV_DIR_BACKWARD; 2870 s->mv_dir |= MV_DIR_BACKWARD;
2861 2871
2862 mx = h263_decode_motion(s, s->last_mv[1][0][0], s->b_code); 2872 mx = h263_decode_motion(s, s->last_mv[1][0][0], s->b_code);
2866 } 2876 }
2867 if(mb_type!=MB_TYPE_B_DIRECT) 2877 if(mb_type!=MB_TYPE_B_DIRECT)
2868 PRINT_MB_TYPE(mb_type==MB_TYPE_B_FORW ? "F" : (mb_type==MB_TYPE_B_BACKW ? "B" : "T")); 2878 PRINT_MB_TYPE(mb_type==MB_TYPE_B_FORW ? "F" : (mb_type==MB_TYPE_B_BACKW ? "B" : "T"));
2869 }else if(mb_type!=MB_TYPE_B_DIRECT){ 2879 }else if(mb_type!=MB_TYPE_B_DIRECT){
2870 s->mv_type= MV_TYPE_FIELD; 2880 s->mv_type= MV_TYPE_FIELD;
2881
2871 if(mb_type!=MB_TYPE_B_BACKW){ 2882 if(mb_type!=MB_TYPE_B_BACKW){
2872 s->mv_dir = MV_DIR_FORWARD; 2883 s->mv_dir = MV_DIR_FORWARD;
2873 s->field_select[0][0]= get_bits1(&s->gb);
2874 s->field_select[0][1]= get_bits1(&s->gb);
2875 2884
2876 for(i=0; i<2; i++){ 2885 for(i=0; i<2; i++){
2877 mx = h263_decode_motion(s, s->last_mv[0][i][0] , s->f_code); 2886 mx = h263_decode_motion(s, s->last_mv[0][i][0] , s->f_code);
2878 my = h263_decode_motion(s, s->last_mv[0][i][1]/2, s->f_code); 2887 my = h263_decode_motion(s, s->last_mv[0][i][1]/2, s->f_code);
2879 s->last_mv[0][i][0]= s->mv[0][i][0] = mx; 2888 s->last_mv[0][i][0]= s->mv[0][i][0] = mx;
2880 s->last_mv[0][i][1]= (s->mv[0][i][1] = my)*2; 2889 s->last_mv[0][i][1]= (s->mv[0][i][1] = my)*2;
2881 } 2890 }
2882 }else 2891 }
2883 s->mv_dir = 0;
2884 2892
2885 if(mb_type!=MB_TYPE_B_FORW){ 2893 if(mb_type!=MB_TYPE_B_FORW){
2886 s->mv_dir |= MV_DIR_BACKWARD; 2894 s->mv_dir |= MV_DIR_BACKWARD;
2887 s->field_select[1][0]= get_bits1(&s->gb);
2888 s->field_select[1][1]= get_bits1(&s->gb);
2889 2895
2890 for(i=0; i<2; i++){ 2896 for(i=0; i<2; i++){
2891 mx = h263_decode_motion(s, s->last_mv[1][i][0] , s->b_code); 2897 mx = h263_decode_motion(s, s->last_mv[1][i][0] , s->b_code);
2892 my = h263_decode_motion(s, s->last_mv[1][i][1]/2, s->b_code); 2898 my = h263_decode_motion(s, s->last_mv[1][i][1]/2, s->b_code);
2893 s->last_mv[1][i][0]= s->mv[1][i][0] = mx; 2899 s->last_mv[1][i][0]= s->mv[1][i][0] = mx;