Lines Matching refs:pMb

67 static u32 MvPrediction16x16(mbStorage_t *pMb, mbPred_t *mbPred,
69 static u32 MvPrediction16x8(mbStorage_t *pMb, mbPred_t *mbPred,
71 static u32 MvPrediction8x16(mbStorage_t *pMb, mbPred_t *mbPred,
73 static u32 MvPrediction8x8(mbStorage_t *pMb, subMbPred_t *subMbPred,
75 static u32 MvPrediction(mbStorage_t *pMb, subMbPred_t *subMbPred,
180 pMb pointer to macroblock specific information
188 pMb structure is updated with current macroblock
197 u32 h264bsdInterPrediction(mbStorage_t *pMb, macroblockLayer_t *pMbLayer,
213 ASSERT(pMb);
214 ASSERT(h264bsdMbPartPredMode(pMb->mbType) == PRED_MODE_INTER);
229 switch (pMb->mbType)
233 if (MvPrediction16x16(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
235 refImage.data = pMb->refAddr[0];
237 h264bsdPredictSamples(data, pMb->mv, &refImage,
242 if ( MvPrediction16x8(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
244 refImage.data = pMb->refAddr[0];
246 h264bsdPredictSamples(data, pMb->mv, &refImage,
249 refImage.data = pMb->refAddr[2];
251 h264bsdPredictSamples(data, pMb->mv+8, &refImage,
256 if ( MvPrediction8x16(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
258 refImage.data = pMb->refAddr[0];
260 h264bsdPredictSamples(data, pMb->mv, &refImage,
262 refImage.data = pMb->refAddr[1];
264 h264bsdPredictSamples(data, pMb->mv+4, &refImage,
269 if ( MvPrediction8x8(pMb, &pMbLayer->subMbPred, dpb) != HANTRO_OK)
273 refImage.data = pMb->refAddr[i];
282 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
288 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
291 h264bsdPredictSamples(data, pMb->mv+4*i+2, &refImage,
297 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
300 h264bsdPredictSamples(data, pMb->mv+4*i+1, &refImage,
306 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
309 h264bsdPredictSamples(data, pMb->mv+4*i+1, &refImage,
312 h264bsdPredictSamples(data, pMb->mv+4*i+2, &refImage,
315 h264bsdPredictSamples(data, pMb->mv+4*i+3, &refImage,
325 if (pMb->decoded > 1)
343 pMb pointer to macroblock specific information
351 pMb structure is updated with current macroblock
360 u32 h264bsdInterPrediction(mbStorage_t *pMb, macroblockLayer_t *pMbLayer,
374 ASSERT(pMb);
375 ASSERT(h264bsdMbPartPredMode(pMb->mbType) == PRED_MODE_INTER);
386 switch (pMb->mbType)
390 if (MvPrediction16x16(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
392 refImage.data = pMb->refAddr[0];
393 h264bsdPredictSamples(data, pMb->mv, &refImage, col, row, 0, 0,
398 if ( MvPrediction16x8(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
400 refImage.data = pMb->refAddr[0];
401 h264bsdPredictSamples(data, pMb->mv, &refImage, col, row, 0, 0,
403 refImage.data = pMb->refAddr[2];
404 h264bsdPredictSamples(data, pMb->mv+8, &refImage, col, row, 0, 8,
409 if ( MvPrediction8x16(pMb, &pMbLayer->mbPred, dpb) != HANTRO_OK)
411 refImage.data = pMb->refAddr[0];
412 h264bsdPredictSamples(data, pMb->mv, &refImage, col, row, 0, 0,
414 refImage.data = pMb->refAddr[1];
415 h264bsdPredictSamples(data, pMb->mv+4, &refImage, col, row, 8, 0,
420 if ( MvPrediction8x8(pMb, &pMbLayer->subMbPred, dpb) != HANTRO_OK)
424 refImage.data = pMb->refAddr[i];
432 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
437 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
439 h264bsdPredictSamples(data, pMb->mv+4*i+2, &refImage,
444 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
446 h264bsdPredictSamples(data, pMb->mv+4*i+1, &refImage,
451 h264bsdPredictSamples(data, pMb->mv+4*i, &refImage,
453 h264bsdPredictSamples(data, pMb->mv+4*i+1, &refImage,
455 h264bsdPredictSamples(data, pMb->mv+4*i+2, &refImage,
457 h264bsdPredictSamples(data, pMb->mv+4*i+3, &refImage,
467 if (pMb->decoded > 1)
470 if (pMb->mbType != P_Skip)
493 u32 MvPrediction16x16(mbStorage_t *pMb, mbPred_t *mbPred, dpbStorage_t *dpb)
509 GetInterNeighbour(pMb->sliceId, pMb->mbA, a, 5);
510 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+1, 10);
515 if (pMb->mbType == P_Skip &&
525 GetInterNeighbour(pMb->sliceId, pMb->mbC, a+2, 10);
528 GetInterNeighbour(pMb->sliceId, pMb->mbD, a+2, 15);
550 pMb->mv[0] = pMb->mv[1] = pMb->mv[2] = pMb->mv[3] =
551 pMb->mv[4] = pMb->mv[5] = pMb->mv[6] = pMb->mv[7] =
552 pMb->mv[8] = pMb->mv[9] = pMb->mv[10] = pMb->mv[11] =
553 pMb->mv[12] = pMb->mv[13] = pMb->mv[14] = pMb->mv[15] = mv;
555 pMb->refPic[0] = refIndex;
556 pMb->refPic[1] = refIndex;
557 pMb->refPic[2] = refIndex;
558 pMb->refPic[3] = refIndex;
559 pMb->refAddr[0] = tmp;
560 pMb->refAddr[1] = tmp;
561 pMb->refAddr[2] = tmp;
562 pMb->refAddr[3] = tmp;
577 u32 MvPrediction16x8(mbStorage_t *pMb, mbPred_t *mbPred, dpbStorage_t *dpb)
593 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+1, 10);
599 GetInterNeighbour(pMb->sliceId, pMb->mbA, a, 5);
600 GetInterNeighbour(pMb->sliceId, pMb->mbC, a+2, 10);
603 GetInterNeighbour(pMb->sliceId, pMb->mbD, a+2, 15);
624 pMb->mv[0] = pMb->mv[1] = pMb->mv[2] = pMb->mv[3] =
625 pMb->mv[4] = pMb->mv[5] = pMb->mv[6] = pMb->mv[7] = mv;
626 pMb->refPic[0] = refIndex;
627 pMb->refPic[1] = refIndex;
628 pMb->refAddr[0] = tmp;
629 pMb->refAddr[1] = tmp;
634 GetInterNeighbour(pMb->sliceId, pMb->mbA, a, 13);
640 a[1].refIndex = pMb->refPic[0];
641 a[1].mv = pMb->mv[0];
644 GetInterNeighbour(pMb->sliceId, pMb->mbA, a+2, 7);
664 pMb->mv[8] = pMb->mv[9] = pMb->mv[10] = pMb->mv[11] =
665 pMb->mv[12] = pMb->mv[13] = pMb->mv[14] = pMb->mv[15] = mv;
666 pMb->refPic[2] = refIndex;
667 pMb->refPic[3] = refIndex;
668 pMb->refAddr[2] = tmp;
669 pMb->refAddr[3] = tmp;
684 u32 MvPrediction8x16(mbStorage_t *pMb, mbPred_t *mbPred, dpbStorage_t *dpb)
700 GetInterNeighbour(pMb->sliceId, pMb->mbA, a, 5);
706 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+1, 10);
707 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+2, 14);
710 GetInterNeighbour(pMb->sliceId, pMb->mbD, a+2, 15);
731 pMb->mv[0] = pMb->mv[1] = pMb->mv[2] = pMb->mv[3] =
732 pMb->mv[8] = pMb->mv[9] = pMb->mv[10] = pMb->mv[11] = mv;
733 pMb->refPic[0] = refIndex;
734 pMb->refPic[2] = refIndex;
735 pMb->refAddr[0] = tmp;
736 pMb->refAddr[2] = tmp;
741 GetInterNeighbour(pMb->sliceId, pMb->mbC, a+2, 10);
744 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+2, 11);
751 a[0].refIndex = pMb->refPic[0];
752 a[0].mv = pMb->mv[0];
754 GetInterNeighbour(pMb->sliceId, pMb->mbB, a+1, 14);
774 pMb->mv[4] = pMb->mv[5] = pMb->mv[6] = pMb->mv[7] =
775 pMb->mv[12] = pMb->mv[13] = pMb->mv[14] = pMb->mv[15] = mv;
776 pMb->refPic[1] = refIndex;
777 pMb->refPic[3] = refIndex;
778 pMb->refAddr[1] = tmp;
779 pMb->refAddr[3] = tmp;
794 u32 MvPrediction8x8(mbStorage_t *pMb, subMbPred_t *subMbPred, dpbStorage_t *dpb)
807 pMb->refPic[i] = subMbPred->refIdxL0[i];
808 pMb->refAddr[i] = h264bsdGetRefPicData(dpb, subMbPred->refIdxL0[i]);
809 if (pMb->refAddr[i] == NULL)
813 if (MvPrediction(pMb, subMbPred, i, j) != HANTRO_OK)
831 u32 MvPrediction(mbStorage_t *pMb, subMbPred_t *subMbPred, u32 mbPartIdx,
851 nMb = h264bsdGetNeighbourMb(pMb, n->mb);
852 GetInterNeighbour(pMb->sliceId, nMb, a, n->index);
855 nMb = h264bsdGetNeighbourMb(pMb, n->mb);
856 GetInterNeighbour(pMb->sliceId, nMb, a+1, n->index);
859 nMb = h264bsdGetNeighbourMb(pMb, n->mb);
860 GetInterNeighbour(pMb->sliceId, nMb, a+2, n->index);
865 nMb = h264bsdGetNeighbourMb(pMb, n->mb);
866 GetInterNeighbour(pMb->sliceId, nMb, a+2, n->index);
885 pMb->mv[4*mbPartIdx] = mv;
886 pMb->mv[4*mbPartIdx + 1] = mv;
887 pMb->mv[4*mbPartIdx + 2] = mv;
888 pMb->mv[4*mbPartIdx + 3] = mv;
892 pMb->mv[4*mbPartIdx + 2*subMbPartIdx] = mv;
893 pMb->mv[4*mbPartIdx + 2*subMbPartIdx + 1] = mv;
897 pMb->mv[4*mbPartIdx + subMbPartIdx] = mv;
898 pMb->mv[4*mbPartIdx + subMbPartIdx + 2] = mv;
902 pMb->mv[4*mbPartIdx + subMbPartIdx] = mv;