亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mp4eblck.c

?? Linux下的基于intel的ipp庫的MPEG4編碼程序
?? C
?? 第 1 頁 / 共 2 頁
字號:

                /* PQFx[0][u] = QFx[0][u] - QFc[0][u] * QPc // QPx */
                /* defined in subclause 7.4.3.3 of ISO/IEC 14496-2: 2001(E) */
                if (cur_qp == pred_qp) {
                    /* QPc == QPx */
                    for (i=1; i < SAMPLE_VIDEO_BLOCK_SIZE; i++) {
                        level = coef[i] - coef_bufrow[i];

                        if ((128 <= level) || (-128 >= level)) {
                            sum_err  = MPEG4_PRED_DISABLE;
                            i = SAMPLE_VIDEO_BLOCK_SIZE;
                        } else {
                            sum_err += ABS_MP4(coef[i]) - ABS_MP4(level);
                            pred_buf[blk_indx * 8 + i] = (Ipp16s)level;
                        }
                    }
                } else {
                    /* QPc != QPx */
                    for (i=1; i < SAMPLE_VIDEO_BLOCK_SIZE; i++) {
                        if (0 <= coef_bufrow[i]) {
                            level = coef[i] - (coef_bufrow[i] * pred_qp
                                + (cur_qp >> 1)) / cur_qp;
                        } else {
                            level = coef[i] - (coef_bufrow[i] * pred_qp
                                - (cur_qp >> 1)) / cur_qp;
                        }

                        if ((128 <= level) || (-128 >= level)) {
                            sum_err  = MPEG4_PRED_DISABLE;
                            i = SAMPLE_VIDEO_BLOCK_SIZE;
                        } else {
                            sum_err += ABS_MP4(coef[i]) - ABS_MP4(level);
                            pred_buf[blk_indx * 8 + i] = (Ipp16s)level;
                        }
                    }
                }
            }
        } else if (MPEG4_PRED_DISABLE != sum_err) {

            /* pred_dir == IPP_VIDEO_HORIZONTAL */
            if (0 > coef_bufrow[-8]) {
                pred_buf[blk_indx * 8] = 0;
            } else {
                pred_buf[blk_indx * 8] = 1;
                /* PQFx[v][0] = QFx[v][0] - QFa[v][0] * QPa // QPx */
                /* defined in subclause 7.4.3.3 of ISO/IEC 14496-2: 2001(E) */
                if (cur_qp == pred_qp) {
                    /* QPa == QPx */
                    for (i=1, j=8; i < SAMPLE_VIDEO_BLOCK_SIZE; i++, j+=8) {
                        level = coef[j] - coef_bufcol[i];

                        if ((128 <= level) || (-128 >= level)) {
                            sum_err  = MPEG4_PRED_DISABLE;
                            i = SAMPLE_VIDEO_BLOCK_SIZE;
                        } else {
                            sum_err += ABS_MP4(coef[j]) - ABS_MP4(level);
                            pred_buf[blk_indx * 8 + i] = (Ipp16s)level;
                        }
                    }
                } else {
                    /* QPa != QPx */
                    for (i=1, j=8; i < SAMPLE_VIDEO_BLOCK_SIZE; i++, j+=8) {
                        if (0 <= coef_bufcol[i]) {
                            level = coef[j] - (coef_bufcol[i] * pred_qp
                                + (cur_qp >> 1)) / cur_qp;
                        } else {
                            level = coef[j] - (coef_bufcol[i] * pred_qp
                                - (cur_qp >> 1)) / cur_qp;
                        }

                        if ((128 <= level) || (-128 >= level)) {
                            sum_err  = MPEG4_PRED_DISABLE;
                            i = SAMPLE_VIDEO_BLOCK_SIZE;
                        } else {
                            sum_err += ABS_MP4(coef[j]) - ABS_MP4(level);
                            pred_buf[blk_indx * 8 + i] = (Ipp16s)level;
                        }
                    }
                }
            }
        }

        /* 3. DC coefficient buffer update */
        dc_coef = (Ipp16s)(coef[0] * dc_scaler);
        /* The saturation range after inverse quantisation is listed in 
        // subclause 7.4.4.4 of ISO/IEC 14496-2:2001(E) */
        if (2047 < dc_coef) {
            dc_coef = 2047;
        }

        switch (blk_indx) {
        case Y_BLOCK2:
            tmp_coef         = coef_bufcol[8];
            coef_bufcol[8]   = coef_bufrow[-16];
            coef_bufrow[-16] = tmp_coef;
            
            coef_bufcol[0]   = coef_bufrow[0];
            coef_bufrow[0]   = dc_coef;
            break;
        case Y_BLOCK4:
            coef_bufcol[0]   = dc_coef;
            break;
        default:
            coef_bufcol[0]   = coef_bufrow[0];
            coef_bufrow[0]   = dc_coef;
            break;
        }

        /* 4. AC coefficient buffer update */
        for (i=1, j=8; i < SAMPLE_VIDEO_BLOCK_SIZE; i++, j+= 8) {
            coef_bufrow[i] = coef[i];
            coef_bufcol[i] = coef[j];
        }

        /* 5. DC prediction */
        if (IPP_VIDEO_HORIZONTAL == pred_dir) {
            /* PQFx[0][0] = QFx[0][0] - Fa[0][0] // dc_scaler
            // defined in subclause 7.4.3.2 of ISO/IEC 14496-2:2001(E) */
            coef[0] = (Ipp16s)(coef[0] - (dc_left + (dc_scaler >> 1))
                / dc_scaler);
        } else {
            /* PQFx[0][0] = QFx[0][0] - Fc[0][0] // dc_scaler
            // defined in subclause 7.4.3.2 of ISO/IEC 14496-2:2001(E) */
            coef[0] = (Ipp16s)(coef[0] - (dc_top  + (dc_scaler >> 1))
                / dc_scaler);
        }
    }
    
    /* 6. Determine ac_pred_flag based on the comparison result with the sum
    // of the predicted coefficients absolute values and the sum of original
    // coefficients absolute values */
    if ((MPEG4_PRED_DISABLE != sum_err) && (0 <= sum_err)) {
        
        *ac_pred_flag = 1;
        
        /* AC prediction coefficients update */
        for (blk_indx = Y_BLOCK1; blk_indx <= V_BLOCK; blk_indx++) {
            if (2 <= pred_buf[blk_indx * 8]) {
                pred_dir_buf[blk_indx] = IPP_VIDEO_VERTICAL;
            }
            else {
                pred_dir_buf[blk_indx] = IPP_VIDEO_HORIZONTAL;
            }

            if (3 == pred_buf[blk_indx * 8]) {
                for (i = 1; i < SAMPLE_VIDEO_BLOCK_SIZE; i++) {
                    src_dst_coeff[blk_indx*64 + i] = pred_buf[blk_indx*8 + i];
                }
            }
            else if (1 == pred_buf[blk_indx * 8]) {
                for (i = 1; i < SAMPLE_VIDEO_BLOCK_SIZE; i++) {
                    src_dst_coeff[blk_indx*64 + i*8] = pred_buf[blk_indx*8 + i];
                }
            }
        }
    } else {

        *ac_pred_flag = 0;
        
        for (blk_indx = Y_BLOCK1; blk_indx <= V_BLOCK; blk_indx++) {
            pred_dir_buf[blk_indx] = IPP_VIDEO_NONE;
        }
    }

    return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
//
// Name:            encode_block_inter_mpeg4
//
// Description:     Quantize the DCT coefficients of the inter block and store
//                  them into buffer. Meanwhile, the texture residuals are
//                  reconstructed.
//
// Input Arguments:	
//		src_block	- Pointer to the pixels of current inter block.
//		cur_qp		- Quantization parameter of the macroblock which the
//					  current block belongs to.
//		q_matrix	- If the second inverse quantization method is used,  it is
//                    NULL; If the first inverse quantization method is used,
//                    it points to the quantization weighting coefficients
//                    buffer (for inter MB), whose first 64 elements are the
//                    quantization weighting matrix in Q0, the second 64
//                    elements are their reciprocals in Q21.
//
// Output Arguments:	
//      dst_coeff	- Pointer to the quantized DCT coefficients buffer.
//      rec_block	- Pointer to the reconstructed texture residuals.
//
// Returns:
//      SAMPLE_STATUS_NOERR		- If succeeds.
//      SAMPLE_STATUS_ERR       - If encoding fails.
//	
*********************************************************************************/

sample_status encode_block_inter_mpeg4(Ipp16s    *src_block,
                                       Ipp16s    *rec_block,
                                       Ipp16s    *dst_coeff,                                       
                                       Ipp8u     cur_qp,
                                       const int *q_matrix)
{
    Ipp8u   q_matrix_8u[SAMPLE_VIDEO_BLOCK_SQUARE_SIZE];
    Ipp16s  dct_coef_buf[SAMPLE_VIDEO_BLOCK_SQUARE_SIZE + 8];
    Ipp16s* dct_coef = (Ipp16s*)SAMPLE_ALIGN8(dct_coef_buf);
    int     i;
    sample_status     ret_code;

    /* 1. DCT transform */
    /* src_block, dct_coef must be 8 bytes aligned */
    ret_code = ippiDCT8x8Fwd_Video_16s_C1(src_block, dct_coef);
    if (ippStsNoErr != ret_code) {
        return SAMPLE_STATUS_ERR;
    }

    /* 2. Quantisation */
    ret_code = ippiQuantInter_MPEG4_16s_I(dct_coef, cur_qp, q_matrix);
    if (ippStsNoErr != ret_code) {
        return SAMPLE_STATUS_ERR;
    } else {
        memcpy((void*)dst_coeff, (void*)dct_coef, sizeof(Ipp16s) * 64);
    }

    /* 3. Inverse Quantisation */
    if (q_matrix) {
        for (i = 0; i < SAMPLE_VIDEO_BLOCK_SQUARE_SIZE; i++) {
            q_matrix_8u[i] = (Ipp8u)q_matrix[i];
        }
        ret_code = ippiQuantInvInter_MPEG4_16s_I(dct_coef, cur_qp, q_matrix_8u);
    } else {
        ret_code = ippiQuantInvInter_MPEG4_16s_I(dct_coef, cur_qp, NULL);
    }
    
    if (ippStsNoErr != ret_code) {
        return SAMPLE_STATUS_ERR;
    }

    /* 4. IDCT */
    /* dct_coef, rec_block must be 8 bytes aligned */
    ret_code = ippiDCT8x8Inv_Video_16s_C1(dct_coef, rec_block);
    if (ippStsNoErr != ret_code) {
        return SAMPLE_STATUS_ERR;
    }
    
    return SAMPLE_STATUS_NOERR;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品免费网站| 欧美激情一二三区| 久久久久久一二三区| 中文字幕视频一区| 午夜伦欧美伦电影理论片| 精品一区二区久久久| www.欧美日韩| 欧美一级日韩免费不卡| 日本一区二区三区在线不卡| 亚洲精品福利视频网站| 美女高潮久久久| 99久久亚洲一区二区三区青草| 欧美性大战xxxxx久久久| 精品久久人人做人人爱| 亚洲欧美日韩综合aⅴ视频| 奇米精品一区二区三区在线观看| 成人综合婷婷国产精品久久蜜臀 | 在线播放一区二区三区| 精品国产乱码久久| 亚洲情趣在线观看| 久久99国产精品麻豆| 色综合天天综合网国产成人综合天| 欧美日韩免费高清一区色橹橹| 精品久久一区二区三区| 一区二区三区欧美| 久久国产婷婷国产香蕉| 日韩高清国产一区在线| 国产精品综合二区| 国产一区二区三区最好精华液| 激情亚洲综合在线| 在线欧美日韩精品| 久久综合色一综合色88| 亚洲一区二区三区在线播放| 国产麻豆午夜三级精品| 欧美精品亚洲二区| 亚洲视频免费在线| 国产a区久久久| 日韩天堂在线观看| 亚洲国产综合在线| 成人av网站免费观看| 日韩精品中文字幕一区二区三区| 亚洲一区二区三区三| 成人毛片老司机大片| 日韩欧美中文一区| 亚洲成a人v欧美综合天堂下载 | 中文幕一区二区三区久久蜜桃| 视频一区欧美精品| 91福利国产成人精品照片| 国产拍欧美日韩视频二区| 久久成人久久爱| 91精品久久久久久久99蜜桃| 亚洲美腿欧美偷拍| 成人影视亚洲图片在线| 久久久一区二区| 青青草国产精品亚洲专区无| 在线观看一区二区精品视频| 中文字幕国产一区| 国产不卡视频在线观看| 久久久久国产精品麻豆| 极品尤物av久久免费看| 日韩欧美三级在线| 日韩av中文字幕一区二区三区| 欧美又粗又大又爽| 曰韩精品一区二区| 色婷婷av一区二区三区之一色屋| 国产精品大尺度| 成人精品免费网站| 国产精品理论片| 成人激情黄色小说| 中文字幕制服丝袜成人av| 成人黄色在线看| 中文字幕欧美日韩一区| 国产成人精品免费视频网站| 欧美国产一区视频在线观看| 国产成人综合亚洲网站| 国产欧美视频一区二区| 国产精品中文字幕日韩精品| 国产欧美视频一区二区| 成人av资源站| 亚洲欧美怡红院| 色婷婷国产精品| 午夜在线成人av| 91精品黄色片免费大全| 美女尤物国产一区| 欧美精品一区二| 国产成人在线观看| 中文字幕在线不卡一区二区三区| 99国产欧美另类久久久精品| 亚洲女与黑人做爰| 一本久道久久综合中文字幕| 综合婷婷亚洲小说| 欧美视频完全免费看| 日韩一区精品视频| 精品国产91乱码一区二区三区| 激情五月婷婷综合| 中文字幕中文字幕在线一区 | 国产精品传媒在线| 色综合 综合色| 午夜av电影一区| 欧美大度的电影原声| 国产成人超碰人人澡人人澡| 亚洲欧洲成人自拍| 精品视频全国免费看| 蜜桃一区二区三区四区| 久久久久久97三级| 91免费国产在线观看| 亚洲成a人片在线不卡一二三区 | 韩国一区二区在线观看| 精品国产一区二区国模嫣然| 国产91高潮流白浆在线麻豆| |精品福利一区二区三区| 欧美日韩在线精品一区二区三区激情| 日韩高清电影一区| 国产欧美视频一区二区| 欧美性高清videossexo| 国产麻豆成人传媒免费观看| 中文字幕一区二区不卡| 欧美日韩高清不卡| 国产99久久久国产精品免费看| 亚洲免费在线电影| 精品人在线二区三区| 97久久超碰国产精品电影| 日韩国产在线观看一区| 久久精品一区八戒影视| 欧美亚洲日本一区| 国产一区二区视频在线| 亚洲成人动漫av| 国产情人综合久久777777| 欧美日韩国产美| 成人美女在线视频| 视频一区视频二区中文| 最新中文字幕一区二区三区| 日韩一级完整毛片| 色综合激情五月| 国产一区二区精品久久91| 亚洲午夜精品17c| 国产丝袜美腿一区二区三区| 欧美军同video69gay| 波多野结衣亚洲| 久久精品久久99精品久久| 亚洲男人都懂的| 久久一日本道色综合| 色天使久久综合网天天| 国产成人综合网站| 欧美aaa在线| 亚洲国产一区二区a毛片| 亚洲国产精品二十页| 欧美不卡一区二区三区| 欧美色图天堂网| 成人aa视频在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 日韩电影在线看| 亚洲综合色视频| 国产精品夫妻自拍| 久久精品水蜜桃av综合天堂| 日韩欧美成人午夜| 欧美日韩国产一区| 99久久免费精品| 国产91对白在线观看九色| 久久 天天综合| 男女激情视频一区| 亚洲成a人v欧美综合天堂| 国产精品三级久久久久三级| 精品国产亚洲在线| 欧美一级日韩一级| 在线电影院国产精品| 欧美日韩你懂得| 欧美性感一区二区三区| 色视频一区二区| 91视频观看视频| 波波电影院一区二区三区| 懂色一区二区三区免费观看 | 欧美激情中文字幕一区二区| 欧美大片顶级少妇| 精品久久国产老人久久综合| 91.com在线观看| 欧美放荡的少妇| 欧美日韩国产综合一区二区三区| 日本高清不卡aⅴ免费网站| 99久久国产综合精品麻豆| 成人丝袜视频网| 成人免费av网站| 99麻豆久久久国产精品免费优播| 成人三级在线视频| 成人午夜电影久久影院| av在线不卡电影| 成人性生交大合| 91亚洲男人天堂| 色综合天天在线| 在线亚洲一区观看| 欧美色区777第一页| 69久久99精品久久久久婷婷| 欧美一级生活片| 欧美mv和日韩mv国产网站| www国产精品av| 国产丝袜在线精品| 亚洲丝袜另类动漫二区| 亚洲一区在线电影| 日韩电影在线一区二区三区| 全国精品久久少妇|