Mercurial > libavcodec.hg
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; |