📄 readparam.c
字号:
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 + -