Mercurial > libavcodec.hg
comparison cavs.c @ 3468:804434dc50c3 libavcodec
set mvP2 also in PSKIP macroblock
author | stefang |
---|---|
date | Fri, 14 Jul 2006 18:48:50 +0000 |
parents | af598a3e2340 |
children | c9059c843d4c |
comparison
equal
deleted
inserted
replaced
3467:33af013504d5 | 3468:804434dc50c3 |
---|---|
574 enum mv_pred_t mode, enum block_t size, int ref) { | 574 enum mv_pred_t mode, enum block_t size, int ref) { |
575 vector_t *mvP = &h->mv[nP]; | 575 vector_t *mvP = &h->mv[nP]; |
576 vector_t *mvA = &h->mv[nP-1]; | 576 vector_t *mvA = &h->mv[nP-1]; |
577 vector_t *mvB = &h->mv[nP-4]; | 577 vector_t *mvB = &h->mv[nP-4]; |
578 vector_t *mvC = &h->mv[nC]; | 578 vector_t *mvC = &h->mv[nC]; |
579 vector_t *mvP2 = NULL; | 579 const vector_t *mvP2 = NULL; |
580 | 580 |
581 mvP->ref = ref; | 581 mvP->ref = ref; |
582 mvP->dist = h->dist[mvP->ref]; | 582 mvP->dist = h->dist[mvP->ref]; |
583 if(mvC->ref == NOT_AVAIL) | 583 if(mvC->ref == NOT_AVAIL) |
584 mvC = &h->mv[nP-5]; // set to top-left (mvD) | 584 mvC = &h->mv[nP-5]; // set to top-left (mvD) |
585 if(mode == MV_PRED_PSKIP) { | 585 if((mode == MV_PRED_PSKIP) && |
586 if((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) || | 586 ((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) || |
587 ((mvA->x | mvA->y | mvA->ref) == 0) || | 587 ((mvA->x | mvA->y | mvA->ref) == 0) || |
588 ((mvB->x | mvB->y | mvB->ref) == 0) ) { | 588 ((mvB->x | mvB->y | mvB->ref) == 0) )) { |
589 mvP->x = mvP->y = 0; | 589 mvP2 = &un_mv; |
590 set_mvs(mvP,size); | |
591 return; | |
592 } | |
593 } | |
594 /* if there is only one suitable candidate, take it */ | 590 /* if there is only one suitable candidate, take it */ |
595 if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) { | 591 } else if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) { |
596 mvP2= mvA; | 592 mvP2= mvA; |
597 } else if((mvA->ref < 0) && (mvB->ref >= 0) && (mvC->ref < 0)) { | 593 } else if((mvA->ref < 0) && (mvB->ref >= 0) && (mvC->ref < 0)) { |
598 mvP2= mvB; | 594 mvP2= mvB; |
599 } else if((mvA->ref < 0) && (mvB->ref < 0) && (mvC->ref >= 0)) { | 595 } else if((mvA->ref < 0) && (mvB->ref < 0) && (mvC->ref >= 0)) { |
600 mvP2= mvC; | 596 mvP2= mvC; |