Lines Matching refs:pConfig
158 static MS_BOOL MDrv_MFE_CheckEncodeDone(MFE_CONFIG *pConfig);
162 void MDrv_MFE_SetOSRegBase(MFE_CONFIG *pConfig, MS_U32 MFE_U32RegBaseAddr ) in MDrv_MFE_SetOSRegBase() argument
173 static void MDrv_MFE_ENC_Continue(MFE_CONFIG *pConfig) in MDrv_MFE_ENC_Continue() argument
175 MS_ASSERT(pConfig->outbitsbuf[pConfig->nOBufIndex].used_size==0); in MDrv_MFE_ENC_Continue()
176 ms_dprintk(DRV_L3, "Continue with buf[%u]\n", (unsigned int)pConfig->nOBufIndex); in MDrv_MFE_ENC_Continue()
177 …MHal_MFE_set_outbitsbuf(&pConfig->mfe_reg, &pConfig->outbitsbuf[pConfig->nOBufIndex],pConfig->ctxB… in MDrv_MFE_ENC_Continue()
178 pConfig->encode_state = WAIT_FRAME_DONE; in MDrv_MFE_ENC_Continue()
182 static void MDrv_MFE_clear_bitsbuf(MFE_CONFIG *pConfig, MS_U32 clear_num) in MDrv_MFE_clear_bitsbuf() argument
185 … "clear rbits_index = %d, state = %d, clear_num = %u\n", (int)pConfig->rbits_index, pConfig->encod… in MDrv_MFE_clear_bitsbuf()
191 pConfig->outbitsbuf[pConfig->rbits_index].used_size = 0; in MDrv_MFE_clear_bitsbuf()
192 …pConfig->rbits_index = MFE_MUX((pConfig->rbits_index+1)==pConfig->ctxBufInfo.m_nOutBuffer, 0, pCon… in MDrv_MFE_clear_bitsbuf()
196 if (pConfig->encode_state==WAIT_AVAIL_BITSBUF) in MDrv_MFE_clear_bitsbuf()
197 MDrv_MFE_ENC_Continue(pConfig); in MDrv_MFE_clear_bitsbuf()
201 static MS_S32 MDrv_MFE_GetDispOrder(MFE_CONFIG *pConfig, GOPINFO *pGopInfo, MS_U32 *pDispOrder) in MDrv_MFE_GetDispOrder() argument
211 if (pConfig->nCodecType==REG_ENC_MODE_H264 && (pConfig->bInterlace!=PROGRESSIVE)) { in MDrv_MFE_GetDispOrder()
212 if (pConfig->ctxH264Info.structure==FRAME) // Initial value in MDrv_MFE_GetDispOrder()
213 pConfig->ctxH264Info.structure = TOP_FIELD; in MDrv_MFE_GetDispOrder()
214 else if (pConfig->ctxH264Info.structure==TOP_FIELD) in MDrv_MFE_GetDispOrder()
215 pConfig->ctxH264Info.structure = BOTTOM_FIELD; in MDrv_MFE_GetDispOrder()
216 else if (pConfig->ctxH264Info.structure==BOTTOM_FIELD) in MDrv_MFE_GetDispOrder()
217 pConfig->ctxH264Info.structure = TOP_FIELD; in MDrv_MFE_GetDispOrder()
220 mfeSetVopType(pConfig, pGopInfo); in MDrv_MFE_GetDispOrder()
347 static MS_S32 MDrv_MFE_EncodeVOP_End(MFE_CONFIG *pConfig) in MDrv_MFE_EncodeVOP_End() argument
364 pConfig->nDropFlag = 1; in MDrv_MFE_EncodeVOP_End()
368 pConfig->nDropFlag = 0; in MDrv_MFE_EncodeVOP_End()
370 switch (pConfig->nCodecType) { in MDrv_MFE_EncodeVOP_End()
373 mfeM4VE_UpdateFrame(pConfig); in MDrv_MFE_EncodeVOP_End()
376 mfeH264_UpdateFrame(pConfig); in MDrv_MFE_EncodeVOP_End()
383 if(pConfig->VTMode && (pConfig->vopPredType==I_VOP)) in MDrv_MFE_EncodeVOP_End()
385 pConfig->bForceIframe = FALSE; in MDrv_MFE_EncodeVOP_End()
419 static MS_BOOL copybits2file(MFE_CONFIG *pConfig, MS_U16 val_1e) in copybits2file() argument
422 MS_U8 voptype = pConfig->vopPredType; in copybits2file()
423 MS_U32 Y_start = pConfig->ctxBufInfo.m_nRecYAddr.miuAddress; in copybits2file()
430 start = pConfig->outbitsbuf[pConfig->nOBufIndex].start_addr; in copybits2file()
434 size = pConfig->ctxBufInfo.m_OutBufferSize; in copybits2file()
440 if(pConfig->VTMode && rc_CheckSkippedFrame(&pConfig->VTRateCtrl)){ in copybits2file()
441 OutStream* pStream = &pConfig->m_OutStream; in copybits2file()
443 memcpy(addr_phy2log(start + pConfig->MFE_U32MFEMIUOffset), in copybits2file()
448 if(pConfig->SecurityMode) { in copybits2file()
470 wbits_index = pConfig->nOBufIndex; in copybits2file()
471 pConfig->nOBufIndex = (pConfig->nOBufIndex+1)%pConfig->ctxBufInfo.m_nOutBuffer; //next outbuf in copybits2file()
476 …ms_dprintk(DRV_L3, "MFE encoding bitsbuf full! buf %u, size %d\n", (unsigned int)pConfig->nOBufInd… in copybits2file()
477 pConfig->encode_state = WAIT_AVAIL_BITSBUF; in copybits2file()
483 pConfig->bitsframe[wbits_index].miuAddress = start; in copybits2file()
484 …pConfig->bitsframe[wbits_index].miuPointer = (MS_U32)addr_phy2log(start + pConfig->MFE_U32MFEMIUOf… in copybits2file()
485 pConfig->bitsframe[wbits_index].size = size; in copybits2file()
488 if(pConfig->UseCABAC && bFrameDone) { in copybits2file()
489 pConfig->bitsframe[wbits_index].stuffing_bytes = MfeDrvCabacStuffingReport(pConfig); in copybits2file()
492 if(!pConfig->SecurityMode) in copybits2file()
493 UDMAOP_DMAGet((MS_S8*)pConfig->bitsframe[wbits_index].miuPointer, size, start, 0); in copybits2file()
496 pConfig->bitsframe[wbits_index].status = BITS_INFO_FRAMEDONE; in copybits2file()
498 pConfig->bitsframe[wbits_index].status = BITS_INFO_BUFFULL; in copybits2file()
500 pConfig->bitsframe[wbits_index].status = BITS_INFO_IMG_BUFFULL; in copybits2file()
502 pConfig->bitsframe[wbits_index].voptype = voptype; in copybits2file()
505 pConfig->bitsframe[wbits_index].IVOP_address = Y_start; in copybits2file()
507 pConfig->bitsframe[wbits_index].IVOP_address = 0; in copybits2file()
510 pConfig->_MFE_U32MFEEvent |= 1<<wbits_index; in copybits2file()
516 MDrv_MFE_EncodeVOP_End(pConfig); in copybits2file()
521 pConfig->encode_state = WAIT_INPUT_FRAME; in copybits2file()
535 static MS_BOOL MDrv_MFE_CheckEncodeDone(MFE_CONFIG *pConfig) in MDrv_MFE_CheckEncodeDone() argument
541 if(pConfig->VTMode && rc_CheckSkippedFrame(&pConfig->VTRateCtrl)){ in MDrv_MFE_CheckEncodeDone()
558 pConfig->total_r_count += tmp_r; in MDrv_MFE_CheckEncodeDone()
559 pConfig->total_w_count += tmp_w; in MDrv_MFE_CheckEncodeDone()
560 if(pConfig->miu_count == 0) { in MDrv_MFE_CheckEncodeDone()
561 pConfig->max_r_count = tmp_r; in MDrv_MFE_CheckEncodeDone()
562 pConfig->max_w_count = tmp_w; in MDrv_MFE_CheckEncodeDone()
563 pConfig->min_r_count = tmp_r; in MDrv_MFE_CheckEncodeDone()
564 pConfig->min_w_count = tmp_w; in MDrv_MFE_CheckEncodeDone()
566 if(tmp_r > pConfig->max_r_count) in MDrv_MFE_CheckEncodeDone()
567 pConfig->max_r_count = tmp_r; in MDrv_MFE_CheckEncodeDone()
568 if(tmp_w > pConfig->max_w_count) in MDrv_MFE_CheckEncodeDone()
569 pConfig->max_w_count = tmp_w; in MDrv_MFE_CheckEncodeDone()
570 if(tmp_r < pConfig->min_r_count) in MDrv_MFE_CheckEncodeDone()
571 pConfig->min_r_count = tmp_r; in MDrv_MFE_CheckEncodeDone()
572 if(tmp_w < pConfig->min_w_count) in MDrv_MFE_CheckEncodeDone()
573 pConfig->min_w_count = tmp_w; in MDrv_MFE_CheckEncodeDone()
575 pConfig->miu_count++; in MDrv_MFE_CheckEncodeDone()
577 … ,tmp_r,tmp_w,pConfig->total_r_count/pConfig->miu_count,pConfig->total_w_count/pConfig->miu_count in MDrv_MFE_CheckEncodeDone()
578 ,pConfig->max_r_count,pConfig->max_w_count,pConfig->min_r_count,pConfig->min_w_count ); in MDrv_MFE_CheckEncodeDone()
581 DumpAllReg(&pConfig->mfe_reg); in MDrv_MFE_CheckEncodeDone()
585 copybits2file(pConfig, val_1e); in MDrv_MFE_CheckEncodeDone()
590 static void MDrv_MFE_EncodeVOP(MFE_CONFIG *pConfig, GOPINFO* pGopInfo) in MDrv_MFE_EncodeVOP() argument
593 ms_dprintk(DRV_L2, "MDrv_MFE_EncodeVOP : %d(I/P/B)\n", pConfig->vopPredType); in MDrv_MFE_EncodeVOP()
596 if(pConfig->VTMode && rc_CheckSkippedFrame(&pConfig->VTRateCtrl)) { in MDrv_MFE_EncodeVOP()
598 MfeDrvRateControlUpdate(pConfig, 0); in MDrv_MFE_EncodeVOP()
599 pConfig->nDropFlag = 1; in MDrv_MFE_EncodeVOP()
602 pConfig->nDropFlag = 0; in MDrv_MFE_EncodeVOP()
606 pConfig->nDropFlag = 0; in MDrv_MFE_EncodeVOP()
609 switch (pConfig->nCodecType) { in MDrv_MFE_EncodeVOP()
612 mfeM4VE_EncodeFrame(pConfig, pGopInfo); in MDrv_MFE_EncodeVOP()
615 if (pConfig->encodeDummyFrame) in MDrv_MFE_EncodeVOP()
617 mfeH264_EncodeDummyFrame(pConfig, pGopInfo); in MDrv_MFE_EncodeVOP()
621 mfeH264_EncodeFrame(pConfig, pGopInfo); in MDrv_MFE_EncodeVOP()
626 mfeJPE_EncodeFrame(pConfig, pGopInfo); in MDrv_MFE_EncodeVOP()
633 pConfig->encode_state = WAIT_FRAME_DONE; in MDrv_MFE_EncodeVOP()
638 static void mdrvLoadTestCasePre(MFE_CONFIG *pConfig) in mdrvLoadTestCasePre() argument
641 if (pConfig->nCodecType==REG_ENC_MODE_H263) { in mdrvLoadTestCasePre()
642 pConfig->bQuantType = 0; in mdrvLoadTestCasePre()
644 else if(pConfig->nCodecType==REG_ENC_MODE_MPG4) { in mdrvLoadTestCasePre()
645 pConfig->bQuantType = 1; in mdrvLoadTestCasePre()
649 static void mdrvLoadTestCasePost(MFE_CONFIG *pConfig) in mdrvLoadTestCasePost() argument
654 static void MDrv_MFE_Init(MFE_CONFIG *pConfig) in MDrv_MFE_Init() argument
660 ms_dprintk(DRV_L1, "CodecType = %d\n", (int)pConfig->nCodecType); in MDrv_MFE_Init()
661 ms_dprintk(DRV_L1, "ColorFormat = %d\n", (int)pConfig->bColorFormat); in MDrv_MFE_Init()
662 ms_dprintk(DRV_L1, "FrameRatex100 = %d\n", (int)pConfig->FrameRatex100); in MDrv_MFE_Init()
663 ms_dprintk(DRV_L1, "bitrate = %d\n", (int)pConfig->nBitrate); in MDrv_MFE_Init()
664 mdrvLoadTestCasePre(pConfig); in MDrv_MFE_Init()
665 if (pConfig->MfeAdvInfo.low_bandwidth_en){ in MDrv_MFE_Init()
666 MS_U32 imi_addr = (MS_U32)pConfig->MfeAdvInfo.imi_buf_addr.miuAddress; in MDrv_MFE_Init()
669 imi_size = (((pConfig->nBufWidth + 15)>>4)*2 + 6)*256; //Y MB rows, plus 5MB's in MDrv_MFE_Init()
681 pConfig->imi_addr = imi_addr; in MDrv_MFE_Init()
682 pConfig->imi_size = imi_size; in MDrv_MFE_Init()
684 switch (pConfig->nCodecType) { in MDrv_MFE_Init()
687 mfeM4VE_Init(pConfig); in MDrv_MFE_Init()
690 mfeH264_Init(pConfig); in MDrv_MFE_Init()
694 mfeJPE_Init(pConfig); in MDrv_MFE_Init()
701 mdrvLoadTestCasePost(pConfig); in MDrv_MFE_Init()
704 ms_dprintk(DRV_L3, "In MDrv_MFE_Init.. set clock level %d\n", pConfig->MFEClk); in MDrv_MFE_Init()
705 MHal_MFE_PowerOff(0,pConfig->MFEClk); in MDrv_MFE_Init()
707 MMAPInit(pConfig->dram_base, pConfig->dram_size, &pConfig->dram_ptr); in MDrv_MFE_Init()
709 pConfig->encode_state = WAIT_INPUT_FRAME; //init encode_state in MDrv_MFE_Init()
710 MHal_MFE_ResetReg(&pConfig->mfe_reg); in MDrv_MFE_Init()
713 switch (pConfig->nCodecType) { in MDrv_MFE_Init()
716 m4veAllocDRAM(pConfig); in MDrv_MFE_Init()
719 h264AllocDRAM(pConfig); in MDrv_MFE_Init()
723 jpeAllocDRAM(pConfig); in MDrv_MFE_Init()
731 for (i=0; i<pConfig->ctxBufInfo.m_nOutBuffer; i++) { in MDrv_MFE_Init()
732 pConfig->outbitsbuf[i].start_addr = pConfig->ctxBufInfo.m_nOutBufAddr[i].miuAddress; in MDrv_MFE_Init()
733 …pConfig->outbitsbuf[i].end_addr = pConfig->ctxBufInfo.m_nOutBufAddr[i].miuAddress+pConfig->ctxBu… in MDrv_MFE_Init()
734 pConfig->outbitsbuf[i].used_size = 0; in MDrv_MFE_Init()
735 …ms_dprintk(DRV_L2, "Obuf index %d: PhyAddr=0x%08x\n", (int)i, (unsigned int)pConfig->outbitsbuf[i]… in MDrv_MFE_Init()
737 pConfig->nOBufIndex = 0; in MDrv_MFE_Init()
747 pConfig->miu_count = 0; in MDrv_MFE_Init()
748 pConfig->total_r_count = 0; in MDrv_MFE_Init()
749 pConfig->total_w_count = 0; in MDrv_MFE_Init()
806 static MS_S32 MDrv_MFE_Finish(MFE_CONFIG* pConfig) in MDrv_MFE_Finish() argument
809 switch (pConfig->nCodecType) { in MDrv_MFE_Finish()
814 mfeH264_DeInit(pConfig); in MDrv_MFE_Finish()
823 MfeDrvRateControlDeInit(pConfig); in MDrv_MFE_Finish()
836 static void MDrv_MFE_SetMIUOffset(MFE_CONFIG *pConfig, MS_U32 MFE_U32MIUOffset ) in MDrv_MFE_SetMIUOffset() argument
839 pConfig->MFE_U32MFEMIUOffset = MFE_U32MIUOffset; in MDrv_MFE_SetMIUOffset()
844 static void MDrv_MFE_GetConfigBytes(MFE_CONFIG *pConfig, void* pHeader_info) in MDrv_MFE_GetConfigBytes() argument
849 if (pHeader_info ==NULL || pConfig==NULL) in MDrv_MFE_GetConfigBytes()
852 pStream = &pConfig->m_OutStream; in MDrv_MFE_GetConfigBytes()
854 if(rc_CheckSkippedFrame(&pConfig->VTRateCtrl)){ in MDrv_MFE_GetConfigBytes()
856 vol_info->Len = codeM4vConfigHeaders(pConfig,TRUE); in MDrv_MFE_GetConfigBytes()
861 switch (pConfig->nCodecType) { in MDrv_MFE_GetConfigBytes()
865 vol_info->Len = codeM4vConfigHeaders(pConfig,FALSE); in MDrv_MFE_GetConfigBytes()
872 codeH264ConfigHeaders(pConfig,&spspps_info->SPSLen,&spspps_info->PPSLen); in MDrv_MFE_GetConfigBytes()