Home | History | Annotate | Download | only in src

Lines Matching refs:currMB

27     AVCMacroblock *currMB ;
44 currMB = video->currMB = &(video->mblock[CurrMbAddr]);
45 currMB->slice_id = video->slice_id; // for deblocking
51 /* calculate currMB->QPy */
159 AVCMacroblock *currMB = video->currMB;
206 if (currMB->mbMode == AVC_I_PCM)
219 //RCCalculateMAD(encvid,currMB,orgL,orgPitch); // no need to re-calculate MAD for Intra
224 if (!currMB->mb_intra)
229 currMB->CBP = 0;
243 currMB->nz_coeff[blkidx] = numcoeff;
247 currMB->CBP |= (1 << b8);
265 if ((currMB->CBP&(1 << b8)) && (cost8 <= _LUMA_COEFF_COST_))
269 currMB->CBP ^= (1 << b8);
272 currMB->nz_coeff[blkidx] = 0;
273 currMB->nz_coeff[blkidx+1] = 0;
274 currMB->nz_coeff[blkidx+4] = 0;
275 currMB->nz_coeff[blkidx+5] = 0;
293 if ((currMB->CBP&0xF) && (cost16 <= _LUMA_MB_COEFF_COST_))
295 currMB->CBP = 0; // reset it to zero
296 memset(currMB->nz_coeff, 0, sizeof(uint8)*16);
300 MBInterIdct(video, curL, currMB, picPitch);
308 if (currMB->mbMode == AVC_I16) /* do prediction for the whole macroblock */
310 currMB->CBP = 0;
314 video->pred_block = encvid->pred_ic[currMB->intra_chroma_pred_mode];
328 set video->QPyprev = currMB->QPy; */
333 if (!currMB->mb_intra)
336 if (!currMB->CBP && currMB->NumMbPart == 1 && currMB->QPy == video->QPy)
338 if (currMB->MBPartPredMode[0][0] == AVC_Pred_L0 && currMB->ref_idx_L0[0] == 0)
345 if (currMB->mvL0[0] == 0) /* both mv components are zeros.*/
347 currMB->mbMode = AVC_SKIP;
357 if (currMB->mvL0[0] == 0) /* both mv components are zeros.*/
359 currMB->mbMode = AVC_SKIP;
366 currMB->mbMode = AVC_SKIP;
371 if (currMB->mbMode == AVC_SKIP)
379 currMB->mbMode = AVC_SKIP;
380 currMB->MbPartWidth = currMB->MbPartHeight = 16;
381 currMB->MBPartPredMode[0][0] = AVC_Pred_L0;
382 currMB->NumMbPart = 1;
383 currMB->NumSubMbPart[0] = currMB->NumSubMbPart[1] =
384 currMB->NumSubMbPart[2] = currMB->NumSubMbPart[3] = 1;
385 currMB->SubMbPartWidth[0] = currMB->SubMbPartWidth[1] =
386 currMB->SubMbPartWidth[2] = currMB->SubMbPartWidth[3] = currMB->MbPartWidth;
387 currMB->SubMbPartHeight[0] = currMB->SubMbPartHeight[1] =
388 currMB->SubMbPartHeight[2] = currMB->SubMbPartHeight[3] = currMB->MbPartHeight;
393 currMB->mbMode = AVC_SKIP;
394 currMB->MbPartWidth = currMB->MbPartHeight = 8;
395 currMB->MBPartPredMode[0][0] = AVC_Direct;
396 currMB->NumMbPart = -1;
400 currMB->RefIdx[0] = currMB->RefIdx[1] =
401 currMB->RefIdx[2] = currMB->RefIdx[3] = video->RefPicList0[0]->RefIdx;
415 if (slice_type != AVC_I_SLICE && slice_type != AVC_SI_SLICE && currMB->mbMode != AVC_SKIP)
424 if (currMB->mbMode != AVC_SKIP)
426 status = EncodeMBHeader(currMB, encvid);
439 if (currMB->mbMode == AVC_I16)
442 status = enc_residual_block(encvid, AVC_Intra16DC, encvid->numcoefdc, currMB);
453 if (currMB->CBP&(1 << b8))
458 status = enc_residual_block(encvid, resType, (b8 << 2) + b4, currMB);
468 if (currMB->CBP & (3 << 4)) /* chroma DC residual present */
473 status = enc_residual_block(encvid, AVC_ChromaDC, encvid->numcoefcdc[b8] + (b8 << 3), currMB);
481 if (currMB->CBP & (2 << 4))
489 status = enc_residual_block(encvid, AVC_ChromaAC, 16 + (b8 << 2) + b4, currMB);
550 AVCEnc_Status EncodeMBHeader(AVCMacroblock *currMB, AVCEncObject *encvid)
557 if (currMB->CBP > 47) /* chroma CBP is 11 */
559 currMB->CBP -= 16; /* remove the 5th bit from the right */
562 mb_type = InterpretMBType(currMB, video->slice_type);
566 if (currMB->mbMode == AVC_P8 || currMB->mbMode == AVC_P8ref0)
568 status = sub_mb_pred(video, currMB, stream);
572 status = mb_pred(video, currMB, stream) ;
575 if (currMB->mbMode != AVC_I16)
578 status = EncodeCBP(currMB, stream);
581 /* calculate currMB->mb_qp_delta = currMB->QPy - video->QPyprev */
582 if (currMB->CBP > 0 || currMB->mbMode == AVC_I16)
584 status = se_v(stream, currMB->QPy - video->QPy);
585 video->QPy = currMB->QPy; /* = (video->QPyprev + currMB->mb_qp_delta + 52)%52; */
586 // no need video->QPc = currMB->QPc;
590 if (currMB->QPy != video->QPy) // current QP is not the same as previous QP
593 RCRestoreQP(currMB, video, encvid);
602 uint InterpretMBType(AVCMacroblock *currMB, int slice_type)
609 if (currMB->mb_intra)
611 if (currMB->mbMode == AVC_I4)
615 else if (currMB->mbMode == AVC_I16)
617 CBP_chrom = (currMB->CBP & 0x30);
618 if (currMB->CBP&0xF)
620 currMB->CBP |= 0xF; /* either 0x0 or 0xF */
627 mb_type += (CBP_chrom >> 2) + currMB->i16Mode;
629 else /* if(currMB->mbMode == AVC_I_PCM) */
637 mb_type = currMB->mbMode - AVC_P16;
642 if (currMB->mb_intra)
650 if(currMB->mbMode == AVC_BDirect16)
654 else if(currMB->mbMode == AVC_P16)
656 mb_type = currMB->MBPartPredMode[0][0] + 1; // 1 or 2
658 else if(currMB->mbMode == AVC_P8)
662 else if(currMB->mbMode == AVC_P8ref0)
668 part1 = currMB->mbMode - AVC_P16x8;
669 part2 = currMB->MBPartPredMode[0][0];
670 part3 = currMB->MBPartPredMode[1][0];
686 AVCEnc_Status mb_pred(AVCCommonObj *video, AVCMacroblock *currMB, AVCEncBitstream *stream)
694 if (currMB->mbMode == AVC_I4 || currMB->mbMode == AVC_I16)
696 if (currMB->mbMode == AVC_I4)
699 EncodeIntra4x4Mode(video, currMB, stream);
700 /* output will be in currMB->i4Mode[4][4] */
704 status = ue_v(stream, currMB->intra_chroma_pred_mode);
706 else if (currMB->MBPartPredMode[0][0] != AVC_Direct)
709 memset(currMB->ref_idx_L0, 0, sizeof(int16)*4);
713 /* if(video->MbaffFrameFlag && currMB->mb_field_decoding_flag)
719 for (mbPartIdx = 0; mbPartIdx < currMB->NumMbPart; mbPartIdx++)
721 if (/*(sliceHdr->num_ref_idx_l0_active_minus1>0 || currMB->mb_field_decoding_flag) &&*/
722 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L1)
724 code = currMB->ref_idx_L0[mbPartIdx];
732 /* if(video->MbaffFrameFlag && currMB->mb_field_decoding_flag)
738 for (mbPartIdx = 0; mbPartIdx < currMB->NumMbPart; mbPartIdx++)
740 if (/*(sliceHdr->num_ref_idx_l1_active_minus1>0 || currMB->mb_field_decoding_flag) &&*/
741 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L0)
743 status = te_v(stream, currMB->ref_idx_L1[mbPartIdx], max_ref_idx);
749 for (mbPartIdx = 0; mbPartIdx < currMB->NumMbPart; mbPartIdx++)
751 if (currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L1)
758 for (mbPartIdx = 0; mbPartIdx < currMB->NumMbPart; mbPartIdx++)
760 if (currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L0)
772 AVCEnc_Status sub_mb_pred(AVCCommonObj *video, AVCMacroblock *currMB, AVCEncBitstream *stream)
782 if (currMB->mbMode == AVC_P8ref0)
784 memset(currMB->ref_idx_L0, 0, sizeof(int16)*4);
788 /* assign values to currMB->sub_mb_type[] */
791 InterpretSubMBTypeP(currMB, sub_mb_type);
796 InterpretSubMBTypeB(currMB,sub_mb_type);
806 /* if(video->MbaffFrameFlag && currMB->mb_field_decoding_flag)
811 if ((sliceHdr->num_ref_idx_l0_active_minus1 > 0 /*|| currMB->mb_field_decoding_flag*/) &&
812 currMB->mbMode != AVC_P8ref0 && /*currMB->subMbMode[mbPartIdx]!=AVC_BDirect8 &&*/
813 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L1)
815 status = te_v(stream, currMB->ref_idx_L0[mbPartIdx], max_ref_idx);
818 currMB->RefIdx[mbPartIdx] = video->RefPicList0[currMB->ref_idx_L0[mbPartIdx]]->RefIdx;
822 /* if(video->MbaffFrameFlag && currMB->mb_field_decoding_flag)
829 if (/*(sliceHdr->num_ref_idx_l1_active_minus1>0 || currMB->mb_field_decoding_flag) &&*/
830 /*currMB->subMbMode[mbPartIdx]!=AVC_BDirect8 &&*/
831 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L0)
833 status = te_v(stream, currMB->ref_idx_L1[mbPartIdx], max_ref_idx);
840 if (/*currMB->subMbMode[mbPartIdx]!=AVC_BDirect8 &&*/
841 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L1)
843 for (subMbPartIdx = 0; subMbPartIdx < currMB->NumSubMbPart[mbPartIdx]; subMbPartIdx++)
853 if (/*currMB->subMbMode[mbPartIdx]!=AVC_BDirect8 &&*/
854 currMB->MBPartPredMode[mbPartIdx][0] != AVC_Pred_L0)
856 for (subMbPartIdx = 0; subMbPartIdx < currMB->NumSubMbPart[mbPartIdx]; subMbPartIdx++)
920 AVCEnc_Status EncodeIntra4x4Mode(AVCCommonObj *video, AVCMacroblock *currMB, AVCEncBitstream *stream)
941 intra4x4PredModeA = currMB->i4Mode[(block_y << 2) + block_x - 1 ];
964 intra4x4PredModeB = currMB->i4Mode[((block_y-1) << 2) + block_x];
993 mode = currMB->i4Mode[(block_y<<2)+block_x];