Mercurial > libavcodec.hg
changeset 3468:804434dc50c3 libavcodec
set mvP2 also in PSKIP macroblock
author | stefang |
---|---|
date | Fri, 14 Jul 2006 18:48:50 +0000 |
parents | 33af013504d5 |
children | c9059c843d4c |
files | cavs.c |
diffstat | 1 files changed, 6 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/cavs.c Fri Jul 14 18:48:38 2006 +0000 +++ b/cavs.c Fri Jul 14 18:48:50 2006 +0000 @@ -576,23 +576,19 @@ vector_t *mvA = &h->mv[nP-1]; vector_t *mvB = &h->mv[nP-4]; vector_t *mvC = &h->mv[nC]; - vector_t *mvP2 = NULL; + const vector_t *mvP2 = NULL; mvP->ref = ref; mvP->dist = h->dist[mvP->ref]; if(mvC->ref == NOT_AVAIL) mvC = &h->mv[nP-5]; // set to top-left (mvD) - if(mode == MV_PRED_PSKIP) { - if((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) || + if((mode == MV_PRED_PSKIP) && + ((mvA->ref == NOT_AVAIL) || (mvB->ref == NOT_AVAIL) || ((mvA->x | mvA->y | mvA->ref) == 0) || - ((mvB->x | mvB->y | mvB->ref) == 0) ) { - mvP->x = mvP->y = 0; - set_mvs(mvP,size); - return; - } - } + ((mvB->x | mvB->y | mvB->ref) == 0) )) { + mvP2 = &un_mv; /* if there is only one suitable candidate, take it */ - if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) { + } else if((mvA->ref >= 0) && (mvB->ref < 0) && (mvC->ref < 0)) { mvP2= mvA; } else if((mvA->ref < 0) && (mvB->ref >= 0) && (mvC->ref < 0)) { mvP2= mvB;