comparison mpeg12.c @ 38:5bf15419d47e libavcodec

changed quant matrix order (should fix mmx mpeg decoding bug)
author glantau
date Tue, 07 Aug 2001 22:47:08 +0000
parents 20e680e7a490
children 933cc4acab5c
comparison
equal deleted inserted replaced
37:eb898f29e49f 38:5bf15419d47e
1170 s->mpeg2 = 1; 1170 s->mpeg2 = 1;
1171 } 1171 }
1172 1172
1173 static void mpeg_decode_quant_matrix_extension(MpegEncContext *s) 1173 static void mpeg_decode_quant_matrix_extension(MpegEncContext *s)
1174 { 1174 {
1175 int i, v; 1175 int i, v, j;
1176 1176
1177 if (get_bits1(&s->gb)) { 1177 if (get_bits1(&s->gb)) {
1178 for(i=0;i<64;i++) { 1178 for(i=0;i<64;i++) {
1179 v = get_bits(&s->gb, 8); 1179 v = get_bits(&s->gb, 8);
1180 s->intra_matrix[i] = v; 1180 j = block_permute_op(i);
1181 s->chroma_intra_matrix[i] = v; 1181 s->intra_matrix[j] = v;
1182 s->chroma_intra_matrix[j] = v;
1182 } 1183 }
1183 } 1184 }
1184 if (get_bits1(&s->gb)) { 1185 if (get_bits1(&s->gb)) {
1185 for(i=0;i<64;i++) { 1186 for(i=0;i<64;i++) {
1186 v = get_bits(&s->gb, 8); 1187 v = get_bits(&s->gb, 8);
1187 s->non_intra_matrix[i] = v; 1188 j = block_permute_op(i);
1188 s->chroma_non_intra_matrix[i] = v; 1189 s->non_intra_matrix[j] = v;
1190 s->chroma_non_intra_matrix[j] = v;
1189 } 1191 }
1190 } 1192 }
1191 if (get_bits1(&s->gb)) { 1193 if (get_bits1(&s->gb)) {
1192 for(i=0;i<64;i++) { 1194 for(i=0;i<64;i++) {
1193 v = get_bits(&s->gb, 8); 1195 v = get_bits(&s->gb, 8);
1194 s->chroma_intra_matrix[i] = v; 1196 j = block_permute_op(i);
1197 s->chroma_intra_matrix[j] = v;
1195 } 1198 }
1196 } 1199 }
1197 if (get_bits1(&s->gb)) { 1200 if (get_bits1(&s->gb)) {
1198 for(i=0;i<64;i++) { 1201 for(i=0;i<64;i++) {
1199 v = get_bits(&s->gb, 8); 1202 v = get_bits(&s->gb, 8);
1200 s->chroma_non_intra_matrix[i] = v; 1203 j = block_permute_op(i);
1204 s->chroma_non_intra_matrix[j] = v;
1201 } 1205 }
1202 } 1206 }
1203 } 1207 }
1204 1208
1205 static void mpeg_decode_picture_coding_extension(MpegEncContext *s) 1209 static void mpeg_decode_picture_coding_extension(MpegEncContext *s)
1343 static int mpeg1_decode_sequence(AVCodecContext *avctx, 1347 static int mpeg1_decode_sequence(AVCodecContext *avctx,
1344 UINT8 *buf, int buf_size) 1348 UINT8 *buf, int buf_size)
1345 { 1349 {
1346 Mpeg1Context *s1 = avctx->priv_data; 1350 Mpeg1Context *s1 = avctx->priv_data;
1347 MpegEncContext *s = &s1->mpeg_enc_ctx; 1351 MpegEncContext *s = &s1->mpeg_enc_ctx;
1348 int width, height, i, v; 1352 int width, height, i, v, j;
1349 1353
1350 init_get_bits(&s->gb, buf, buf_size); 1354 init_get_bits(&s->gb, buf, buf_size);
1351 1355
1352 width = get_bits(&s->gb, 12); 1356 width = get_bits(&s->gb, 12);
1353 height = get_bits(&s->gb, 12); 1357 height = get_bits(&s->gb, 12);
1387 1391
1388 /* get matrix */ 1392 /* get matrix */
1389 if (get_bits1(&s->gb)) { 1393 if (get_bits1(&s->gb)) {
1390 for(i=0;i<64;i++) { 1394 for(i=0;i<64;i++) {
1391 v = get_bits(&s->gb, 8); 1395 v = get_bits(&s->gb, 8);
1392 s->intra_matrix[i] = v; 1396 j = block_permute_op(i);
1393 s->chroma_intra_matrix[i] = v; 1397 s->intra_matrix[j] = v;
1398 s->chroma_intra_matrix[j] = v;
1394 } 1399 }
1395 } else { 1400 } else {
1396 for(i=0;i<64;i++) { 1401 for(i=0;i<64;i++) {
1397 v = default_intra_matrix[i]; 1402 v = default_intra_matrix[i];
1398 s->intra_matrix[i] = v; 1403 s->intra_matrix[i] = v;
1400 } 1405 }
1401 } 1406 }
1402 if (get_bits1(&s->gb)) { 1407 if (get_bits1(&s->gb)) {
1403 for(i=0;i<64;i++) { 1408 for(i=0;i<64;i++) {
1404 v = get_bits(&s->gb, 8); 1409 v = get_bits(&s->gb, 8);
1405 s->non_intra_matrix[i] = v; 1410 j = block_permute_op(i);
1406 s->chroma_non_intra_matrix[i] = v; 1411 s->non_intra_matrix[j] = v;
1412 s->chroma_non_intra_matrix[j] = v;
1407 } 1413 }
1408 } else { 1414 } else {
1409 for(i=0;i<64;i++) { 1415 for(i=0;i<64;i++) {
1410 v = default_non_intra_matrix[i]; 1416 v = default_non_intra_matrix[i];
1411 s->non_intra_matrix[i] = v; 1417 s->non_intra_matrix[i] = v;