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

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

?? dnxhdenc.c

?? ffmpeg移植到symbian的全部源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        ctx->m.q_intra_matrix   = ctx->qmatrix_c;        return 1 + (i&1);    } else {        ctx->m.q_intra_matrix16 = ctx->qmatrix_l16;        ctx->m.q_intra_matrix   = ctx->qmatrix_l;        return 0;    }}static int dnxhd_calc_bits_thread(AVCodecContext *avctx, void *arg){    DNXHDEncContext *ctx = arg;    int mb_y, mb_x;    int qscale = ctx->thread[0]->qscale;    for (mb_y = ctx->m.start_mb_y; mb_y < ctx->m.end_mb_y; mb_y++) {        ctx->m.last_dc[0] =        ctx->m.last_dc[1] =        ctx->m.last_dc[2] = 1024;        for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {            unsigned mb = mb_y * ctx->m.mb_width + mb_x;            int ssd     = 0;            int ac_bits = 0;            int dc_bits = 0;            int i;            dnxhd_get_blocks(ctx, mb_x, mb_y);            for (i = 0; i < 8; i++) {                DECLARE_ALIGNED_16(DCTELEM, block[64]);                DCTELEM *src_block = ctx->blocks[i];                int overflow, nbits, diff, last_index;                int n = dnxhd_switch_matrix(ctx, i);                memcpy(block, src_block, sizeof(block));                last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow);                ac_bits += dnxhd_calc_ac_bits(ctx, block, last_index);                diff = block[0] - ctx->m.last_dc[n];                if (diff < 0) nbits = av_log2_16bit(-2*diff);                else          nbits = av_log2_16bit( 2*diff);                dc_bits += ctx->cid_table->dc_bits[nbits] + nbits;                ctx->m.last_dc[n] = block[0];                if (avctx->mb_decision == FF_MB_DECISION_RD || !RC_VARIANCE) {                    dnxhd_unquantize_c(ctx, block, i, qscale, last_index);                    ctx->m.dsp.idct(block);                    ssd += dnxhd_ssd_block(block, src_block);                }            }            ctx->mb_rc[qscale][mb].ssd = ssd;            ctx->mb_rc[qscale][mb].bits = ac_bits+dc_bits+12+8*ctx->vlc_bits[0];        }    }    return 0;}static int dnxhd_encode_thread(AVCodecContext *avctx, void *arg){    DNXHDEncContext *ctx = arg;    int mb_y, mb_x;    for (mb_y = ctx->m.start_mb_y; mb_y < ctx->m.end_mb_y; mb_y++) {        ctx->m.last_dc[0] =        ctx->m.last_dc[1] =        ctx->m.last_dc[2] = 1024;        for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {            unsigned mb = mb_y * ctx->m.mb_width + mb_x;            int qscale = ctx->mb_qscale[mb];            int i;            put_bits(&ctx->m.pb, 12, qscale<<1);            dnxhd_get_blocks(ctx, mb_x, mb_y);            for (i = 0; i < 8; i++) {                DCTELEM *block = ctx->blocks[i];                int last_index, overflow;                int n = dnxhd_switch_matrix(ctx, i);                last_index = ctx->m.dct_quantize((MpegEncContext*)ctx, block, i, qscale, &overflow);                //START_TIMER;                dnxhd_encode_block(ctx, block, last_index, n);                //STOP_TIMER("encode_block");            }        }        if (put_bits_count(&ctx->m.pb)&31)            put_bits(&ctx->m.pb, 32-(put_bits_count(&ctx->m.pb)&31), 0);    }    flush_put_bits(&ctx->m.pb);    return 0;}static void dnxhd_setup_threads_slices(DNXHDEncContext *ctx, uint8_t *buf){    int mb_y, mb_x;    int i, offset = 0;    for (i = 0; i < ctx->m.avctx->thread_count; i++) {        int thread_size = 0;        for (mb_y = ctx->thread[i]->m.start_mb_y; mb_y < ctx->thread[i]->m.end_mb_y; mb_y++) {            ctx->slice_size[mb_y] = 0;            for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {                unsigned mb = mb_y * ctx->m.mb_width + mb_x;                ctx->slice_size[mb_y] += ctx->mb_bits[mb];            }            ctx->slice_size[mb_y] = (ctx->slice_size[mb_y]+31)&~31;            ctx->slice_size[mb_y] >>= 3;            thread_size += ctx->slice_size[mb_y];        }        init_put_bits(&ctx->thread[i]->m.pb, buf + 640 + offset, thread_size);        offset += thread_size;    }}static int dnxhd_mb_var_thread(AVCodecContext *avctx, void *arg){    DNXHDEncContext *ctx = arg;    int mb_y, mb_x;    for (mb_y = ctx->m.start_mb_y; mb_y < ctx->m.end_mb_y; mb_y++) {        for (mb_x = 0; mb_x < ctx->m.mb_width; mb_x++) {            unsigned mb  = mb_y * ctx->m.mb_width + mb_x;            uint8_t *pix = ctx->thread[0]->src[0] + ((mb_y<<4) * ctx->m.linesize) + (mb_x<<4);            int sum      = ctx->m.dsp.pix_sum(pix, ctx->m.linesize);            int varc     = (ctx->m.dsp.pix_norm1(pix, ctx->m.linesize) - (((unsigned)(sum*sum))>>8)+128)>>8;            ctx->mb_cmp[mb].value = varc;            ctx->mb_cmp[mb].mb = mb;        }    }    return 0;}static int dnxhd_encode_rdo(AVCodecContext *avctx, DNXHDEncContext *ctx){    int lambda, up_step, down_step;    int last_lower = INT_MAX, last_higher = 0;    int x, y, q;    for (q = 1; q < avctx->qmax; q++) {        ctx->qscale = q;        avctx->execute(avctx, dnxhd_calc_bits_thread, (void**)&ctx->thread[0], NULL, avctx->thread_count);    }    up_step = down_step = 2<<LAMBDA_FRAC_BITS;    lambda = ctx->lambda;    for (;;) {        int bits = 0;        int end = 0;        if (lambda == last_higher) {            lambda++;            end = 1; // need to set final qscales/bits        }        for (y = 0; y < ctx->m.mb_height; y++) {            for (x = 0; x < ctx->m.mb_width; x++) {                unsigned min = UINT_MAX;                int qscale = 1;                int mb = y*ctx->m.mb_width+x;                for (q = 1; q < avctx->qmax; q++) {                    unsigned score = ctx->mb_rc[q][mb].bits*lambda+(ctx->mb_rc[q][mb].ssd<<LAMBDA_FRAC_BITS);                    if (score < min) {                        min = score;                        qscale = q;                    }                }                bits += ctx->mb_rc[qscale][mb].bits;                ctx->mb_qscale[mb] = qscale;                ctx->mb_bits[mb] = ctx->mb_rc[qscale][mb].bits;            }            bits = (bits+31)&~31; // padding            if (bits > ctx->frame_bits)                break;        }        //dprintf(ctx->m.avctx, "lambda %d, up %u, down %u, bits %d, frame %d\n",        //        lambda, last_higher, last_lower, bits, ctx->frame_bits);        if (end) {            if (bits > ctx->frame_bits)                return -1;            break;        }        if (bits < ctx->frame_bits) {            last_lower = FFMIN(lambda, last_lower);            if (last_higher != 0)                lambda = (lambda+last_higher)>>1;            else                lambda -= down_step;            down_step *= 5; // XXX tune ?            up_step = 1<<LAMBDA_FRAC_BITS;            lambda = FFMAX(1, lambda);            if (lambda == last_lower)                break;        } else {            last_higher = FFMAX(lambda, last_higher);            if (last_lower != INT_MAX)                lambda = (lambda+last_lower)>>1;            else                lambda += up_step;            up_step *= 5;            down_step = 1<<LAMBDA_FRAC_BITS;        }    }    //dprintf(ctx->m.avctx, "out lambda %d\n", lambda);    ctx->lambda = lambda;    return 0;}static int dnxhd_find_qscale(DNXHDEncContext *ctx){    int bits = 0;    int up_step = 1;    int down_step = 1;    int last_higher = 0;    int last_lower = INT_MAX;    int qscale;    int x, y;    qscale = ctx->qscale;    for (;;) {        bits = 0;        ctx->qscale = qscale;        // XXX avoid recalculating bits        ctx->m.avctx->execute(ctx->m.avctx, dnxhd_calc_bits_thread, (void**)&ctx->thread[0], NULL, ctx->m.avctx->thread_count);        for (y = 0; y < ctx->m.mb_height; y++) {            for (x = 0; x < ctx->m.mb_width; x++)                bits += ctx->mb_rc[qscale][y*ctx->m.mb_width+x].bits;            bits = (bits+31)&~31; // padding            if (bits > ctx->frame_bits)                break;        }        //dprintf(ctx->m.avctx, "%d, qscale %d, bits %d, frame %d, higher %d, lower %d\n",        //        ctx->m.avctx->frame_number, qscale, bits, ctx->frame_bits, last_higher, last_lower);        if (bits < ctx->frame_bits) {            if (qscale == 1)                return 1;            if (last_higher == qscale - 1) {                qscale = last_higher;                break;            }            last_lower = FFMIN(qscale, last_lower);            if (last_higher != 0)                qscale = (qscale+last_higher)>>1;            else                qscale -= down_step++;            if (qscale < 1)                qscale = 1;            up_step = 1;        } else {            if (last_lower == qscale + 1)                break;            last_higher = FFMAX(qscale, last_higher);            if (last_lower != INT_MAX)                qscale = (qscale+last_lower)>>1;            else                qscale += up_step++;            down_step = 1;            if (qscale >= ctx->m.avctx->qmax)                return -1;        }    }    //dprintf(ctx->m.avctx, "out qscale %d\n", qscale);    ctx->qscale = qscale;    return 0;}static int dnxhd_rc_cmp(const void *a, const void *b){    return ((const RCCMPEntry *)b)->value - ((const RCCMPEntry *)a)->value;}static int dnxhd_encode_fast(AVCodecContext *avctx, DNXHDEncContext *ctx){    int max_bits = 0;    int ret, x, y;    if ((ret = dnxhd_find_qscale(ctx)) < 0)        return -1;    for (y = 0; y < ctx->m.mb_height; y++) {        for (x = 0; x < ctx->m.mb_width; x++) {            int mb = y*ctx->m.mb_width+x;            int delta_bits;            ctx->mb_qscale[mb] = ctx->qscale;            ctx->mb_bits[mb] = ctx->mb_rc[ctx->qscale][mb].bits;            max_bits += ctx->mb_rc[ctx->qscale][mb].bits;            if (!RC_VARIANCE) {                delta_bits = ctx->mb_rc[ctx->qscale][mb].bits-ctx->mb_rc[ctx->qscale+1][mb].bits;                ctx->mb_cmp[mb].mb = mb;                ctx->mb_cmp[mb].value = delta_bits ?                    ((ctx->mb_rc[ctx->qscale][mb].ssd-ctx->mb_rc[ctx->qscale+1][mb].ssd)*100)/delta_bits                    : INT_MIN; //avoid increasing qscale            }        }        max_bits += 31; //worst padding    }    if (!ret) {        if (RC_VARIANCE)            avctx->execute(avctx, dnxhd_mb_var_thread, (void**)&ctx->thread[0], NULL, avctx->thread_count);        qsort(ctx->mb_cmp, ctx->m.mb_num, sizeof(RCEntry), dnxhd_rc_cmp);        for (x = 0; x < ctx->m.mb_num && max_bits > ctx->frame_bits; x++) {            int mb = ctx->mb_cmp[x].mb;            max_bits -= ctx->mb_rc[ctx->qscale][mb].bits - ctx->mb_rc[ctx->qscale+1][mb].bits;            ctx->mb_qscale[mb] = ctx->qscale+1;            ctx->mb_bits[mb] = ctx->mb_rc[ctx->qscale+1][mb].bits;        }    }    return 0;}static void dnxhd_load_picture(DNXHDEncContext *ctx, const AVFrame *frame){    int i;    for (i = 0; i < 3; i++) {        ctx->frame.data[i]     = frame->data[i];        ctx->frame.linesize[i] = frame->linesize[i];    }    for (i = 0; i < ctx->m.avctx->thread_count; i++) {        ctx->thread[i]->m.linesize    = ctx->frame.linesize[0]<<ctx->interlaced;        ctx->thread[i]->m.uvlinesize  = ctx->frame.linesize[1]<<ctx->interlaced;        ctx->thread[i]->dct_y_offset  = ctx->m.linesize  *8;        ctx->thread[i]->dct_uv_offset = ctx->m.uvlinesize*8;    }    ctx->frame.interlaced_frame = frame->interlaced_frame;    ctx->cur_field = frame->interlaced_frame && !frame->top_field_first;}static int dnxhd_encode_picture(AVCodecContext *avctx, unsigned char *buf, int buf_size, const void *data){    DNXHDEncContext *ctx = avctx->priv_data;    int first_field = 1;    int offset, i, ret;    if (buf_size < ctx->cid_table->frame_size) {        av_log(avctx, AV_LOG_ERROR, "output buffer is too small to compress picture\n");        return -1;    }    dnxhd_load_picture(ctx, data); encode_coding_unit:    for (i = 0; i < 3; i++) {        ctx->src[i] = ctx->frame.data[i];        if (ctx->interlaced && ctx->cur_field)            ctx->src[i] += ctx->frame.linesize[i];    }    dnxhd_write_header(avctx, buf);    if (avctx->mb_decision == FF_MB_DECISION_RD)        ret = dnxhd_encode_rdo(avctx, ctx);    else        ret = dnxhd_encode_fast(avctx, ctx);    if (ret < 0) {        av_log(avctx, AV_LOG_ERROR, "picture could not fit ratecontrol constraints\n");        return -1;    }    dnxhd_setup_threads_slices(ctx, buf);    offset = 0;    for (i = 0; i < ctx->m.mb_height; i++) {        AV_WB32(ctx->msip + i * 4, offset);        offset += ctx->slice_size[i];        assert(!(ctx->slice_size[i] & 3));    }    avctx->execute(avctx, dnxhd_encode_thread, (void**)&ctx->thread[0], NULL, avctx->thread_count);    AV_WB32(buf + ctx->cid_table->coding_unit_size - 4, 0x600DC0DE); // EOF    if (ctx->interlaced && first_field) {        first_field     = 0;        ctx->cur_field ^= 1;        buf      += ctx->cid_table->coding_unit_size;        buf_size -= ctx->cid_table->coding_unit_size;        goto encode_coding_unit;    }    ctx->frame.quality = ctx->qscale*FF_QP2LAMBDA;    return ctx->cid_table->frame_size;}static int dnxhd_encode_end(AVCodecContext *avctx){    DNXHDEncContext *ctx = avctx->priv_data;    int max_level = 1<<(ctx->cid_table->bit_depth+2);    int i;    av_free(ctx->vlc_codes-max_level*2);    av_free(ctx->vlc_bits -max_level*2);    av_freep(&ctx->run_codes);    av_freep(&ctx->run_bits);    av_freep(&ctx->mb_bits);    av_freep(&ctx->mb_qscale);    av_freep(&ctx->mb_rc);    av_freep(&ctx->mb_cmp);    av_freep(&ctx->slice_size);    av_freep(&ctx->qmatrix_c);    av_freep(&ctx->qmatrix_l);    av_freep(&ctx->qmatrix_c16);    av_freep(&ctx->qmatrix_l16);    for (i = 1; i < avctx->thread_count; i++)        av_freep(&ctx->thread[i]);    return 0;}#ifdef __CW32__typedef int (encode)(AVCodecContext *, uint8_t *buf, int buf_size, void *data);#endifAVCodec dnxhd_encoder = {    "dnxhd",    CODEC_TYPE_VIDEO,    CODEC_ID_DNXHD,    sizeof(DNXHDEncContext),    dnxhd_encode_init,#ifdef __CW32__    (encode*)dnxhd_encode_picture,#else    dnxhd_encode_picture,#endif    dnxhd_encode_end,#ifdef __CW32__    0,    0,    0,    0,    0,    (enum PixelFormat[]){PIX_FMT_YUV422P, PIX_FMT_NONE},    NULL_IF_CONFIG_SMALL("VC3/DNxHD"),#else    .pix_fmts = (enum PixelFormat[]){PIX_FMT_YUV422P, PIX_FMT_NONE},    .long_name = NULL_IF_CONFIG_SMALL("VC3/DNxHD"),#endif};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费日韩伦理电影| 久久视频一区二区| 亚洲第一激情av| 欧美电影一区二区| 狠狠色伊人亚洲综合成人| 国产午夜精品美女毛片视频| 成人av第一页| 亚洲第一综合色| 欧美成va人片在线观看| 粉嫩在线一区二区三区视频| 91精品国产综合久久久久久漫画 | 亚洲第一福利视频在线| 在线看国产日韩| 亚洲中国最大av网站| 在线播放一区二区三区| 国产不卡在线一区| 亚洲综合激情网| 欧美电影免费观看完整版| 国产精品一二三区| 亚洲影院在线观看| 亚洲精品一区二区三区影院| 成人永久aaa| 午夜一区二区三区视频| 久久久精品中文字幕麻豆发布| 972aa.com艺术欧美| 日韩avvvv在线播放| 国产精品国产三级国产a| 欧美日韩免费在线视频| 国产麻豆精品久久一二三| 亚洲一区二区中文在线| 久久久精品免费免费| 欧美三级日韩三级| 丁香啪啪综合成人亚洲小说| 三级久久三级久久久| 国产精品久久久久久久久免费相片 | 一区二区三区欧美亚洲| 日韩一级免费观看| 91一区二区三区在线播放| 久久精品噜噜噜成人av农村| 亚洲欧美国产毛片在线| 久久久国产精华| 日韩一区二区三区在线| 色哟哟一区二区| 国产精品一二三| 日本午夜一本久久久综合| 国产东北露脸精品视频| 天堂影院一区二区| 亚洲欧美一区二区三区极速播放 | www国产精品av| 欧洲亚洲国产日韩| 成人激情图片网| 国产一区二区三区免费| 日韩av一区二区在线影视| 国产a视频精品免费观看| 美女视频黄 久久| 亚洲丰满少妇videoshd| 亚洲精品久久久蜜桃| 中文字幕在线观看不卡| 中文字幕免费一区| 日本一区二区三区高清不卡| 精品国产一区二区三区忘忧草| 4438x成人网最大色成网站| 色综合久久久久久久| 99精品一区二区三区| 不卡视频一二三| 成人小视频在线| 国产91在线观看丝袜| 国产精品一区专区| 国产精品一区二区三区99| 黑人巨大精品欧美一区| 激情六月婷婷综合| 国产在线视视频有精品| 狠狠色伊人亚洲综合成人| 久久超级碰视频| 国产一区二区三区黄视频| 国产精品资源站在线| 国产成人在线影院| 不卡视频一二三四| 91美女片黄在线观看91美女| 色综合视频在线观看| 在线视频一区二区三区| 在线欧美日韩国产| 91精品国产色综合久久不卡电影| 欧美一二三在线| 精品国一区二区三区| 久久久亚洲精品石原莉奈 | 99视频精品全部免费在线| 成人永久免费视频| 99久久久免费精品国产一区二区| 91看片淫黄大片一级在线观看| 色偷偷一区二区三区| 欧美精品xxxxbbbb| 欧美一卡2卡三卡4卡5免费| 久久一夜天堂av一区二区三区| 中文字幕欧美三区| 亚洲精品成a人| 日韩专区一卡二卡| 国产激情视频一区二区三区欧美| 成人亚洲精品久久久久软件| 色综合激情久久| 欧美高清你懂得| 欧美精品一区二区久久久| 国产精品免费网站在线观看| 亚洲影院久久精品| 狠狠久久亚洲欧美| 色哟哟一区二区| 精品久久久久久无| 亚洲色图19p| 免费的国产精品| 成人黄色电影在线 | 久久久久久99精品| 亚洲最新在线观看| 国产一区二区三区综合| 日本电影欧美片| 精品国产免费视频| 亚洲免费观看高清完整版在线观看| 婷婷开心激情综合| 成人丝袜高跟foot| 在线不卡a资源高清| 亚洲欧美影音先锋| 免费在线观看日韩欧美| 91视频在线观看免费| 欧美v日韩v国产v| 亚洲三级在线观看| 久久www免费人成看片高清| 在线亚洲人成电影网站色www| 日韩欧美国产系列| 亚洲一区二区三区在线| 粉嫩一区二区三区性色av| 在线播放国产精品二区一二区四区| 欧美国产精品劲爆| 狂野欧美性猛交blacked| 欧美色大人视频| 中文字幕在线不卡一区| 国产美女一区二区三区| 欧美日韩国产在线观看| 18欧美亚洲精品| 国产美女av一区二区三区| 欧美高清dvd| 一区二区三区.www| www.欧美亚洲| 国产欧美一区二区三区鸳鸯浴| 免费在线看一区| 欧美精品一二三| 一区二区不卡在线播放| 97久久超碰国产精品| 国产日产亚洲精品系列| 麻豆精品久久精品色综合| 欧美男男青年gay1069videost | 视频一区国产视频| 色婷婷狠狠综合| 亚洲视频精选在线| 成人黄色av网站在线| 国产日本亚洲高清| 国产激情精品久久久第一区二区| 欧美精品一区二| 韩国女主播一区| 久久综合网色—综合色88| 久久99精品国产麻豆婷婷洗澡| 欧美一级搡bbbb搡bbbb| 奇米影视一区二区三区| 欧美一区二区三区视频免费播放| 日韩专区中文字幕一区二区| 欧美电影在线免费观看| 奇米综合一区二区三区精品视频| 337p亚洲精品色噜噜| 日韩国产欧美三级| 91精品麻豆日日躁夜夜躁| 美腿丝袜亚洲综合| 26uuu亚洲| 东方aⅴ免费观看久久av| 久久久国际精品| 成人av电影免费观看| 亚洲女同一区二区| 欧美在线不卡视频| 日日夜夜免费精品| 精品免费国产一区二区三区四区| 精品无码三级在线观看视频| 久久日韩粉嫩一区二区三区| 国产a区久久久| 亚洲免费毛片网站| 欧美日韩亚州综合| 精品一区二区免费在线观看| 久久九九久久九九| 99久久精品国产一区| 亚洲成av人片在线观看| 精品国产乱码久久久久久蜜臀| 国产乱码精品一区二区三区av| 中文字幕日韩欧美一区二区三区| 91一区二区在线观看| 性做久久久久久久久| 欧美mv日韩mv| 91小视频免费观看| 丝袜诱惑亚洲看片 | 亚洲人快播电影网| 欧美理论电影在线| 国产九色sp调教91| 亚洲综合另类小说| 久久这里只精品最新地址| 91小视频在线|