comparison mpeg12.c @ 1326:6cdd3b8f4fd3 libavcodec

DMV support patch by ("Ivan Kalvachev" <ivan at cacad dot com>)
author michaelni
date Mon, 23 Jun 2003 22:32:15 +0000
parents 1cbc2380d172
children ca3122e0a3cd
comparison
equal deleted inserted replaced
1325:1cbc2380d172 1326:6cdd3b8f4fd3
1106 dmx = get_dmv(s); 1106 dmx = get_dmv(s);
1107 my = mpeg_decode_motion(s, s->mpeg_f_code[i][1], 1107 my = mpeg_decode_motion(s, s->mpeg_f_code[i][1],
1108 s->last_mv[i][0][1] >> 1); 1108 s->last_mv[i][0][1] >> 1);
1109 dmy = get_dmv(s); 1109 dmy = get_dmv(s);
1110 s->mv_type = MV_TYPE_DMV; 1110 s->mv_type = MV_TYPE_DMV;
1111 /* XXX: totally broken */ 1111
1112
1113 s->last_mv[i][0][1] = my<<1;
1114 s->last_mv[i][1][1] = my<<1;
1115
1116 s->mv[i][0][0] = mx;
1117 s->mv[i][0][1] = my;
1118 s->mv[i][1][0] = mx;//not used
1119 s->mv[i][1][1] = my;//not used
1120
1112 if (s->picture_structure == PICT_FRAME) { 1121 if (s->picture_structure == PICT_FRAME) {
1113 mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED; 1122 mb_type |= MB_TYPE_16x16 | MB_TYPE_INTERLACED;
1114 1123
1115 s->last_mv[i][0][1] = my << 1; 1124 //m = 1 + 2 * s->top_field_first;
1116 s->last_mv[i][1][1] = my << 1;
1117
1118 m = s->top_field_first ? 1 : 3; 1125 m = s->top_field_first ? 1 : 3;
1126
1119 /* top -> top pred */ 1127 /* top -> top pred */
1120 s->mv[i][0][0] = mx; 1128 s->mv[i][2][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
1121 s->mv[i][0][1] = my << 1; 1129 s->mv[i][2][1] = ((my * m + (my > 0)) >> 1) + dmy - 1;
1122 s->mv[i][1][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
1123 s->mv[i][1][1] = ((my * m + (my > 0)) >> 1) + dmy - 1;
1124 m = 4 - m; 1130 m = 4 - m;
1125 s->mv[i][2][0] = mx;
1126 s->mv[i][2][1] = my << 1;
1127 s->mv[i][3][0] = ((mx * m + (mx > 0)) >> 1) + dmx; 1131 s->mv[i][3][0] = ((mx * m + (mx > 0)) >> 1) + dmx;
1128 s->mv[i][3][1] = ((my * m + (my > 0)) >> 1) + dmy + 1; 1132 s->mv[i][3][1] = ((my * m + (my > 0)) >> 1) + dmy + 1;
1129 } else { 1133 } else {
1130 mb_type |= MB_TYPE_16x16; 1134 mb_type |= MB_TYPE_16x16;
1131 1135
1132 s->last_mv[i][0][1] = my; 1136 s->mv[i][2][0] = ((mx + (mx > 0)) >> 1) + dmx;
1133 s->last_mv[i][1][1] = my; 1137 s->mv[i][2][1] = ((my + (my > 0)) >> 1) + dmy;
1134 s->mv[i][0][0] = mx; 1138 if(s->picture_structure == PICT_TOP_FIELD)
1135 s->mv[i][0][1] = my; 1139 s->mv[i][2][1]--;
1136 s->mv[i][1][0] = ((mx + (mx > 0)) >> 1) + dmx; 1140 else
1137 s->mv[i][1][1] = ((my + (my > 0)) >> 1) + dmy - 1 1141 s->mv[i][2][1]++;
1138 /* + 2 * cur_field */;
1139 } 1142 }
1140 } 1143 }
1141 break; 1144 break;
1142 } 1145 }
1143 } 1146 }