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