⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readparam.c

📁 adi bf533视频编码程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	else if(img_format == IMG_FORMAT_QCIF) {
	    VOL.video_object_layer_width = 176;
	    VOL.video_object_layer_height = 144;
	    MBDMA_YS0_x_mod = 8;
	    MBDMA_YS0_y_mod = YUV656_BUF_WIDTH*2-16*8+8;
	    MBDMA_YS0_y_mod_prepro = YUV656_BUF_WIDTH*2-18*8+8;
	    MBDMA_UVS0_y_mod = YUV656_BUF_WIDTH*4-8*16+16;
	    prepro_back_offset = YUV656_BUF_WIDTH*2 + 8;
		MB_byte_step = 128;
		MB_row_step = 32;
	}
	else if(img_format == IMG_FORMAT_2CIF) {
	    VOL.video_object_layer_width = 720;
	    VOL.video_object_layer_height = 288;
	    MBDMA_YS0_x_mod = 2;
	    MBDMA_YS0_y_mod = YUV656_BUF_WIDTH-16*2+2;
	    MBDMA_YS0_y_mod_prepro = YUV656_BUF_WIDTH-18*2+2;
	    MBDMA_UVS0_y_mod = YUV656_BUF_WIDTH*2-8*4+4;
	    prepro_back_offset = YUV656_BUF_WIDTH + 2;
		MB_byte_step = 32;
		MB_row_step = 16;
	}	    

    VOL.interlaced = 0;
    VOL.obmc_disable = 1;
    VOL.sprite_enable = 0;
    //f VOL.sprite_width;
    //f VOL.sprite_height;
    //f VOL.sprite_left_coordinate;
    //f VOL.sprite_top_coordinate;
    //f VOL.sprite_warping_points;
    //f VOL.sprite_warping_accuracy;
    //f VOL.sprite_brightness_change;
    //f VOL.low_latency_sprite_enable;
    VOL.sadct_disable = 1;
    VOL.not_8_bit = 0;
    VOL.quant_precision = 5;
    VOL.bits_per_pixel = 8;
    //f VOL.no_gray_quant_update;
    //f VOL.composition_method;
    //f VOL.linear_composition;
    VOL.quant_type = 0;	
    VOL.load_intra_quant_mat = 0;
    VOL.load_intra_quant_mat_len = 0;
    VOL.load_nonintra_quant_mat = 0;
    VOL.load_nonintra_quant_mat_len = 0;
    //f VOL.quant_mat_grayscale;
    VOL.quarter_sample = 0;
    VOL.complexity_estimation_disable = 1;
    //f VOL.ComplexityEstimation;
    VOL.resync_marker_disable = 1;
    VOL.data_partitioned = 0;
    VOL.reversible_vlc = 0;
    VOL.newpred_enable = 0;
    //f VOL.requested_upstream_message_type;
    //f VOL.newpred_segment_type;
    VOL.reduced_resolution_vop_enable = 0;
    VOL.scalability = 0;
    //f VOL.ScalabilityParameters;
    VOP.vop_time_increment = 0;
    VOP.intra_dc_vlc_thr = 0;
    VOP.top_field_first = 1;
    VOP.alternate_vertical_scan_flag = 0;
    VOP.vop_rounding_type = 0;
  
//f ?????
//f    if (VOL.data_partitioned)
//f        VOL.interlaced = 0;

    mPVOPsearchHor = 15;
    mPVOPsearchVer = 15;
    
//    mBVOPsearchHorForw = 15;		----no bvop;
//    mBVOPsearchVerForw = 15;
//    mBVOPsearchHorBack = 15;
//    mBVOPsearchVerBack = 15;

    // calc vop_fcode_forward for PVOPs
    i = IPP_MAX(mPVOPsearchHor, mPVOPsearchVer);
    j = i << 1;
    mPVOPfcodeForw = 1;
    while (j > ((16 << mPVOPfcodeForw) - 1))
        mPVOPfcodeForw ++;					// 1

/*******************************	----no bvop;                
    // calc vop_fcode_forward for BVOPs
    i = IPP_MAX(mBVOPsearchHorForw, mBVOPsearchVerForw);
    j = i << 1;
    mBVOPfcodeForw = 1;
    while (j > ((16 << mBVOPfcodeForw) - 1))
        mBVOPfcodeForw ++;
    // calc vop_fcode_backward for BVOPs
    i = IPP_MAX(mBVOPsearchHorBack, mBVOPsearchHorBack);
    j = i << 1;
    mBVOPfcodeBack = 1;
    while (j > ((16 << mBVOPfcodeBack) - 1))
        mBVOPfcodeBack ++;
********************************/
        
//    ippVideoEncoder_Init(2 + mBVOPdist, 		----no bvop;
//    		VOL.video_object_layer_width, VOL.video_object_layer_height, IPPVC_CHROMA_420, 16);
    ippVideoEncoder_Init(2,
    		VOL.video_object_layer_width, VOL.video_object_layer_height, IPPVC_CHROMA_420, 16);

    		
    if (!VideoEncoder_mIsInit)
        return VideoEncoder_mError;
	
    //let quant matrix be equal to the default matrix;
	VOL.intra_quant_mat = mDefaultIntraQuantMatrix;
	VOL.intra_quant_inv_mat = mDefaultIntraQuantMatrix;
	VOL.nonintra_quant_mat = mDefaultNonIntraQuantMatrix;
	VOL.nonintra_quant_inv_mat = mDefaultNonIntraQuantMatrix;

    cBS.mBuffer =mBuffer;
    cBS.mPtr = cBS.mBuffer;

//----since no fastSAD, commented;    
//    mMEfastSADsize = 
//    	(IPP_MAX(IPP_MAX(mPVOPsearchHor, mBVOPsearchHorForw), mBVOPsearchHorBack) * 2 + 1) * (IPP_MAX(IPP_MAX(mPVOPsearchVer, mBVOPsearchVerForw), mBVOPsearchVerBack) * 2 + 1);
    	
//     mMEfastSAD =fastSAD;


    // setup quant matrix
//    for (i = 0; i < 64; i ++) {
//        VOL.intra_quant_mat[i] = VOL.load_intra_quant_mat ? par->intra_quant_mat[i] : mDefaultIntraQuantMatrix[i];
//        VOL.nonintra_quant_mat[i] = VOL.load_nonintra_quant_mat ? par->nonintra_quant_mat[i] : mDefaultNonIntraQuantMatrix[i];
//        VOL.intra_quant_inv_mat[i] = mDefaultIntraQuantMatrix[i];
//        VOL.nonintra_quant_inv_mat[i] = mDefaultNonIntraQuantMatrix[i];
//    }

    // setup thresholds for ME
    mMEthrIntra = 256;
    
//    mMEthr4MV = 256;												----no 4mv;
//	mMEthrSAD16x16 = mQuantPVOP >= 6 ? 256 : (4 << mQuantPVOP);		----no use;
//    mMEthrSAD8x8 = mMEthrSAD16x16 >> 2;							----no use;

    // setup info for DC AC prediction
    mDefDC = (Ipp16s)(1 << (VOL.bits_per_pixel + 2));
/*    
	for (i = 0; i < mNumMacroBlockPerCol; i ++) {
		for (j = 0; j < mNumMacroBlockPerRow; j ++) {
			struct mp4_MacroBlock *mbCurr = &MBinfo[i*mNumMacroBlockPerRow+j];
			struct mp4_MacroBlock *mbLeft = &MBinfo[i*mNumMacroBlockPerRow+j-1];
			struct mp4_MacroBlock *mbUpper = &MBinfo[(i-1)*mNumMacroBlockPerRow+j];
			struct mp4_MacroBlock *mbLeftUpper = &MBinfo[(i-1)*mNumMacroBlockPerRow+j-1];
//			mbCurr->predDcA[0] = (j == 0) ? &mDefDC : &mbLeft->dct_dc[1];
//			mbCurr->predDcB[0] = (j == 0) || (i == 0) ? &mDefDC : &mbLeftUpper->dct_dc[3];
//			mbCurr->predDcC[0] = (i == 0) ? &mDefDC : &mbUpper->dct_dc[2];
//			mbCurr->predQuantA[0] = (j == 0) ? &mbCurr->quant : &mbLeft->quant;
//			mbCurr->predQuantC[0] = (i == 0) ? &mbCurr->quant : &mbUpper->quant;
			mbCurr->predAcA[0] = (j == 0) ? 0 : &mbLeft->dct_acA[1][0];
			mbCurr->predAcC[0] = (i == 0) ? 0 : &mbUpper->dct_acC[2][0];

//			mbCurr->predDcA[1] = &mbCurr->dct_dc[0];
//			mbCurr->predDcB[1] = (i == 0) ? &mDefDC : &mbUpper->dct_dc[2];
//			mbCurr->predDcC[1] = (i == 0) ? &mDefDC : &mbUpper->dct_dc[3];
//			mbCurr->predQuantA[1] = &mbCurr->quant;
//			mbCurr->predQuantC[1] = (i == 0) ? &mbCurr->quant : &mbUpper->quant;
			mbCurr->predAcA[1] = &mbCurr->dct_acA[0][0];
			mbCurr->predAcC[1] = (i == 0) ? 0 : &mbUpper->dct_acC[3][0];

//			mbCurr->predDcA[2] = (j == 0) ? &mDefDC : &mbLeft->dct_dc[3];
//			mbCurr->predDcB[2] = (j == 0) ? &mDefDC : &mbLeft->dct_dc[1];
//			mbCurr->predDcC[2] = &mbCurr->dct_dc[0];
//			mbCurr->predQuantA[2] = (j == 0) ? &mbCurr->quant : &mbLeft->quant;
//			mbCurr->predQuantC[2] = &mbCurr->quant;
			mbCurr->predAcA[2] = (j == 0) ? 0 : &mbLeft->dct_acA[3][0];
			mbCurr->predAcC[2] = &mbCurr->dct_acC[0][0];

//			mbCurr->predDcA[3] = &mbCurr->dct_dc[2];
//			mbCurr->predDcB[3] = &mbCurr->dct_dc[0];
//			mbCurr->predDcC[3] = &mbCurr->dct_dc[1];
//			mbCurr->predQuantA[3] = &mbCurr->quant;
//			mbCurr->predQuantC[3] = &mbCurr->quant;
			mbCurr->predAcA[3] = &mbCurr->dct_acA[2][0];
			mbCurr->predAcC[3] = &mbCurr->dct_acC[1][0];

//			mbCurr->predDcA[4] = (j == 0) ? &mDefDC : &mbLeft->dct_dc[4];
//			mbCurr->predDcB[4] = (j == 0) || (i == 0) ? &mDefDC : &mbLeftUpper->dct_dc[4];
//			mbCurr->predDcC[4] = (i == 0) ? &mDefDC : &mbUpper->dct_dc[4];
//			mbCurr->predQuantA[4] = (j == 0) ? &mbCurr->quant : &mbLeft->quant;
//			mbCurr->predQuantC[4] = (i == 0) ? &mbCurr->quant : &mbUpper->quant;
			mbCurr->predAcA[4] = (j == 0) ? 0 : &mbLeft->dct_acA[4][0];
			mbCurr->predAcC[4] = (i == 0) ? 0 : &mbUpper->dct_acC[4][0];

//			mbCurr->predDcA[5] = (j == 0) ? &mDefDC : &mbLeft->dct_dc[5];
//			mbCurr->predDcB[5] = (j == 0) || (i == 0) ? &mDefDC : &mbLeftUpper->dct_dc[5];
//			mbCurr->predDcC[5] = (i == 0) ? &mDefDC : &mbUpper->dct_dc[5];
//			mbCurr->predQuantA[5] = (j == 0) ? &mbCurr->quant : &mbLeft->quant;
//			mbCurr->predQuantC[5] = (i == 0) ? &mbCurr->quant : &mbUpper->quant;
			mbCurr->predAcA[5] = (j == 0) ? 0 : &mbLeft->dct_acA[5][0];
			mbCurr->predAcC[5] = (i == 0) ? 0 : &mbUpper->dct_acC[5][0];
		}
	}
	*/
    // setup frames
//    mCurrPtrY = mPtrY[0]; mCurrPtrU = mPtrU[0]; mCurrPtrV = mPtrV[0];
//    mForwPtrY = mPtrY[0]; mForwPtrU = mPtrU[0]; mForwPtrV = mPtrV[0];
//	mCurrPtr656 = mPtr656[0];
	mForwPtrY = mPrefY[0]; mForwPtrU = mPrefU[0]; mForwPtrV = mPrefV[0];
    mCurrPtrY = mPrefY[1]; mCurrPtrU = mPrefU[1]; mCurrPtrV = mPrefV[1];
	

//    mBackPtrY = mPtrY[0]; mBackPtrU = mPtrU[0]; mBackPtrV = mPtrV[0];
    // setup VOP time
    mVOPtime = 0;
    return IPPVC_ERROR_NOERR;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -