Mercurial > libavcodec.hg
comparison vc1.c @ 3451:45724ba8d666 libavcodec
Fix mquant selection for ALL_MBS mode
author | kostya |
---|---|
date | Sun, 09 Jul 2006 02:51:13 +0000 |
parents | 906c58dcb6ea |
children | f024ca7c768b |
comparison
equal
deleted
inserted
replaced
3450:906c58dcb6ea | 3451:45724ba8d666 |
---|---|
702 break; | 702 break; |
703 case DQPROFILE_ALL_MBS: | 703 case DQPROFILE_ALL_MBS: |
704 v->dqbilevel = get_bits(gb, 1); | 704 v->dqbilevel = get_bits(gb, 1); |
705 default: break; //Forbidden ? | 705 default: break; //Forbidden ? |
706 } | 706 } |
707 if (!v->dqbilevel || v->dqprofile != DQPROFILE_ALL_MBS) | 707 if (v->dqbilevel || v->dqprofile != DQPROFILE_ALL_MBS) |
708 { | 708 { |
709 pqdiff = get_bits(gb, 3); | 709 pqdiff = get_bits(gb, 3); |
710 if (pqdiff == 7) v->altpq = get_bits(gb, 5); | 710 if (pqdiff == 7) v->altpq = get_bits(gb, 5); |
711 else v->altpq = v->pq + pqdiff + 1; | 711 else v->altpq = v->pq + pqdiff + 1; |
712 } | 712 } |
1447 int edges = 0; \ | 1447 int edges = 0; \ |
1448 if (v->dqprofile == DQPROFILE_ALL_MBS) \ | 1448 if (v->dqprofile == DQPROFILE_ALL_MBS) \ |
1449 { \ | 1449 { \ |
1450 if (v->dqbilevel) \ | 1450 if (v->dqbilevel) \ |
1451 { \ | 1451 { \ |
1452 mquant = (get_bits(gb, 1)) ? v->pq : v->altpq; \ | 1452 mquant = (get_bits(gb, 1)) ? v->altpq : v->pq; \ |
1453 } \ | 1453 } \ |
1454 else \ | 1454 else \ |
1455 { \ | 1455 { \ |
1456 mqdiff = get_bits(gb, 3); \ | 1456 mqdiff = get_bits(gb, 3); \ |
1457 if (mqdiff != 7) mquant = v->pq + mqdiff; \ | 1457 if (mqdiff != 7) mquant = v->pq + mqdiff; \ |
1462 edges = 1 << v->dqsbedge; \ | 1462 edges = 1 << v->dqsbedge; \ |
1463 else if(v->dqprofile == DQPROFILE_DOUBLE_EDGES) \ | 1463 else if(v->dqprofile == DQPROFILE_DOUBLE_EDGES) \ |
1464 edges = (3 << v->dqsbedge) % 15; \ | 1464 edges = (3 << v->dqsbedge) % 15; \ |
1465 else if(v->dqprofile == DQPROFILE_FOUR_EDGES) \ | 1465 else if(v->dqprofile == DQPROFILE_FOUR_EDGES) \ |
1466 edges = 15; \ | 1466 edges = 15; \ |
1467 mquant = v->pq; \ | |
1468 if((edges&1) && !s->mb_x) \ | 1467 if((edges&1) && !s->mb_x) \ |
1469 mquant = v->altpq; \ | 1468 mquant = v->altpq; \ |
1470 if((edges&2) && !s->mb_y) \ | 1469 if((edges&2) && s->first_slice_line) \ |
1471 mquant = v->altpq; \ | 1470 mquant = v->altpq; \ |
1472 if((edges&4) && s->mb_x == (s->mb_width - 1)) \ | 1471 if((edges&4) && s->mb_x == (s->mb_width - 1)) \ |
1473 mquant = v->altpq; \ | 1472 mquant = v->altpq; \ |
1474 if((edges&8) && s->mb_y == (s->mb_height - 1)) \ | 1473 if((edges&8) && s->mb_y == (s->mb_height - 1)) \ |
1475 mquant = v->altpq; \ | 1474 mquant = v->altpq; \ |