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

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

?? frame.c

?? linux下編譯已經通過
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***************************************************************************** * frame.c: h264 encoder library ***************************************************************************** * Copyright (C) 2003 Laurent Aimar * $Id: frame.c,v 1.1 2004/06/03 19:27:06 fenrir Exp $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************/#include "common.h"#define PADH 32#define PADV 32x264_frame_t *x264_frame_new( x264_t *h ){    x264_frame_t *frame = x264_malloc( sizeof(x264_frame_t) );    int i, j;    int i_mb_count = h->mb.i_mb_count;    int i_stride;    int i_lines;    int i_padv = PADV << h->param.b_interlaced;    if( !frame ) return NULL;    memset( frame, 0, sizeof(x264_frame_t) );    /* allocate frame data (+64 for extra data for me) */    i_stride = ( ( h->param.i_width  + 15 ) & -16 )+ 2*PADH;    i_lines  = ( ( h->param.i_height + 15 ) & -16 );    if( h->param.b_interlaced )        i_lines = ( i_lines + 31 ) & -32;    frame->i_plane = 3;    for( i = 0; i < 3; i++ )    {        int i_divh = 1;        int i_divw = 1;        if( i > 0 )        {            if( h->param.i_csp == X264_CSP_I420 )                i_divh = i_divw = 2;            else if( h->param.i_csp == X264_CSP_I422 )                i_divw = 2;        }        frame->i_stride[i] = i_stride / i_divw;        frame->i_lines[i] = i_lines / i_divh;        CHECKED_MALLOC( frame->buffer[i],                        frame->i_stride[i] * ( frame->i_lines[i] + 2*i_padv / i_divh ) );        frame->plane[i] = ((uint8_t*)frame->buffer[i]) +                          frame->i_stride[i] * i_padv / i_divh + PADH / i_divw;    }    frame->i_stride[3] = 0;    frame->i_lines[3] = 0;    frame->buffer[3] = NULL;    frame->plane[3] = NULL;    frame->filtered[0] = frame->plane[0];    for( i = 0; i < 3; i++ )    {        CHECKED_MALLOC( frame->buffer[4+i],                        frame->i_stride[0] * ( frame->i_lines[0] + 2*i_padv ) );        frame->filtered[i+1] = ((uint8_t*)frame->buffer[4+i]) +                                frame->i_stride[0] * i_padv + PADH;    }    if( h->frames.b_have_lowres )    {        frame->i_stride_lowres = frame->i_stride[0]/2 + PADH;        frame->i_lines_lowres = frame->i_lines[0]/2;        for( i = 0; i < 4; i++ )        {            CHECKED_MALLOC( frame->buffer_lowres[i],                            frame->i_stride_lowres * ( frame->i_lines[0]/2 + 2*i_padv ) );            frame->lowres[i] = ((uint8_t*)frame->buffer_lowres[i]) +                                frame->i_stride_lowres * i_padv + PADH;        }    }    if( h->param.analyse.i_me_method == X264_ME_ESA )    {        CHECKED_MALLOC( frame->buffer[7],                        2 * frame->i_stride[0] * (frame->i_lines[0] + 2*i_padv) * sizeof(uint16_t) );        frame->integral = (uint16_t*)frame->buffer[7] + frame->i_stride[0] * i_padv + PADH;    }    frame->i_poc = -1;    frame->i_type = X264_TYPE_AUTO;    frame->i_qpplus1 = 0;    frame->i_pts = -1;    frame->i_frame = -1;    frame->i_frame_num = -1;    frame->i_lines_completed = -1;    CHECKED_MALLOC( frame->mb_type, i_mb_count * sizeof(int8_t));    CHECKED_MALLOC( frame->mv[0], 2*16 * i_mb_count * sizeof(int16_t) );    CHECKED_MALLOC( frame->ref[0], 4 * i_mb_count * sizeof(int8_t) );    if( h->param.i_bframe )    {        CHECKED_MALLOC( frame->mv[1], 2*16 * i_mb_count * sizeof(int16_t) );        CHECKED_MALLOC( frame->ref[1], 4 * i_mb_count * sizeof(int8_t) );    }    else    {        frame->mv[1]  = NULL;        frame->ref[1] = NULL;    }    CHECKED_MALLOC( frame->i_row_bits, i_lines/16 * sizeof(int) );    CHECKED_MALLOC( frame->i_row_qp, i_lines/16 * sizeof(int) );    for( i = 0; i < h->param.i_bframe + 2; i++ )        for( j = 0; j < h->param.i_bframe + 2; j++ )            CHECKED_MALLOC( frame->i_row_satds[i][j], i_lines/16 * sizeof(int) );    x264_pthread_mutex_init( &frame->mutex, NULL );    x264_pthread_cond_init( &frame->cv, NULL );    return frame;fail:    x264_frame_delete( frame );    return NULL;}void x264_frame_delete( x264_frame_t *frame ){    int i, j;    for( i = 0; i < 8; i++ )        x264_free( frame->buffer[i] );    for( i = 0; i < 4; i++ )        x264_free( frame->buffer_lowres[i] );    for( i = 0; i < X264_BFRAME_MAX+2; i++ )        for( j = 0; j < X264_BFRAME_MAX+2; j++ )            x264_free( frame->i_row_satds[i][j] );    x264_free( frame->i_row_bits );    x264_free( frame->i_row_qp );    x264_free( frame->mb_type );    x264_free( frame->mv[0] );    x264_free( frame->mv[1] );    x264_free( frame->ref[0] );    x264_free( frame->ref[1] );    x264_pthread_mutex_destroy( &frame->mutex );    x264_pthread_cond_destroy( &frame->cv );    x264_free( frame );}void x264_frame_copy_picture( x264_t *h, x264_frame_t *dst, x264_picture_t *src ){    int i_csp = src->img.i_csp & X264_CSP_MASK;    dst->i_type     = src->i_type;    dst->i_qpplus1  = src->i_qpplus1;    dst->i_pts      = src->i_pts;    if( i_csp <= X264_CSP_NONE  || i_csp >= X264_CSP_MAX )        x264_log( h, X264_LOG_ERROR, "Arg invalid CSP\n" );    else        h->csp.convert[i_csp]( &h->mc, dst, &src->img, h->param.i_width, h->param.i_height );}static void plane_expand_border( uint8_t *pix, int i_stride, int i_width, int i_height, int i_padh, int i_padv, int b_pad_top, int b_pad_bottom ){#define PPIXEL(x, y) ( pix + (x) + (y)*i_stride )    int y;    for( y = 0; y < i_height; y++ )    {        /* left band */        memset( PPIXEL(-i_padh, y), PPIXEL(0, y)[0], i_padh );        /* right band */        memset( PPIXEL(i_width, y), PPIXEL(i_width-1, y)[0], i_padh );    }    /* upper band */    if( b_pad_top )    for( y = 0; y < i_padv; y++ )        memcpy( PPIXEL(-i_padh, -y-1), PPIXEL(-i_padh, 0), i_width+2*i_padh );    /* lower band */    if( b_pad_bottom )    for( y = 0; y < i_padv; y++ )        memcpy( PPIXEL(-i_padh, i_height+y), PPIXEL(-i_padh, i_height-1), i_width+2*i_padh );#undef PPIXEL}void x264_frame_expand_border( x264_t *h, x264_frame_t *frame, int mb_y, int b_end ){    int i;    int b_start = !mb_y;    if( mb_y & h->sh.b_mbaff )        return;    for( i = 0; i < frame->i_plane; i++ )    {        int stride = frame->i_stride[i];        int width = 16*h->sps->i_mb_width >> !!i;        int height = (b_end ? 16*(h->sps->i_mb_height - mb_y) >> h->sh.b_mbaff : 16) >> !!i;        int padh = PADH >> !!i;        int padv = PADV >> !!i;        // buffer: 2 chroma, 3 luma (rounded to 4) because deblocking goes beyond the top of the mb        uint8_t *pix = frame->plane[i] + X264_MAX(0, (16*mb_y-4)*stride >> !!i);        if( b_end && !b_start )            height += 4 >> (!!i + h->sh.b_mbaff);        if( h->sh.b_mbaff )        {            plane_expand_border( pix, stride*2, width, height, padh, padv, b_start, b_end );            plane_expand_border( pix+stride, stride*2, width, height, padh, padv, b_start, b_end );        }        else        {            plane_expand_border( pix, stride, width, height, padh, padv, b_start, b_end );        }    }}void x264_frame_expand_border_filtered( x264_t *h, x264_frame_t *frame, int mb_y, int b_end ){    /* during filtering, 8 extra pixels were filtered on each edge.        we want to expand border from the last filtered pixel */    int b_start = !mb_y;    int stride = frame->i_stride[0];    int width = 16*h->sps->i_mb_width + 16;    int height = b_end ? (16*(h->sps->i_mb_height - mb_y) >> h->sh.b_mbaff) + 16 : 16;    int padh = PADH - 8;    int padv = PADV - 8;    int i;    for( i = 1; i < 4; i++ )    {        // buffer: 8 luma, to match the hpel filter        uint8_t *pix = frame->filtered[i] + (16*mb_y - (8 << h->sh.b_mbaff)) * stride - 8;        if( h->sh.b_mbaff )        {            plane_expand_border( pix, stride*2, width, height, padh, padv, b_start, b_end );            plane_expand_border( pix+stride, stride*2, width, height, padh, padv, b_start, b_end );        }        else        {            plane_expand_border( pix, stride, width, height, padh, padv, b_start, b_end );        }    }}void x264_frame_expand_border_lowres( x264_frame_t *frame ){    int i;    for( i = 0; i < 4; i++ )        plane_expand_border( frame->lowres[i], frame->i_stride_lowres, frame->i_stride_lowres - 2*PADH, frame->i_lines_lowres, PADH, PADV, 1, 1 );}void x264_frame_expand_border_mod16( x264_t *h, x264_frame_t *frame ){    int i, y;    for( i = 0; i < frame->i_plane; i++ )    {        int i_subsample = i ? 1 : 0;        int i_width = h->param.i_width >> i_subsample;        int i_height = h->param.i_height >> i_subsample;        int i_padx = ( h->sps->i_mb_width * 16 - h->param.i_width ) >> i_subsample;        int i_pady = ( h->sps->i_mb_height * 16 - h->param.i_height ) >> i_subsample;        if( i_padx )        {            for( y = 0; y < i_height; y++ )                memset( &frame->plane[i][y*frame->i_stride[i] + i_width],                         frame->plane[i][y*frame->i_stride[i] + i_width - 1],                         i_padx );        }        if( i_pady )        {            //FIXME interlace? or just let it pad using the wrong field            for( y = i_height; y < i_height + i_pady; y++ )                memcpy( &frame->plane[i][y*frame->i_stride[i]],                        &frame->plane[i][(i_height-1)*frame->i_stride[i]],                        i_width + i_padx );        }    }}/* cavlc + 8x8 transform stores nnz per 16 coeffs for the purpose of * entropy coding, but per 64 coeffs for the purpose of deblocking */void munge_cavlc_nnz_row( x264_t *h, int mb_y, uint8_t (*buf)[16] ){    uint32_t (*src)[6] = (uint32_t(*)[6])h->mb.non_zero_count + mb_y * h->sps->i_mb_width;    int8_t *transform = h->mb.mb_transform_size + mb_y * h->sps->i_mb_width;    int x;    for( x=0; x<h->sps->i_mb_width; x++ )    {        memcpy( buf+x, src+x, 16 );        if( transform[x] )        {            if( src[x][0] ) src[x][0] = 0x01010101;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲在线一区二区三区| 亚洲一区二区精品久久av| 日韩福利视频导航| 国产酒店精品激情| 色综合天天视频在线观看| 777奇米成人网| 久久久久高清精品| 亚洲午夜久久久| 成人av高清在线| 日韩女同互慰一区二区| 亚洲欧美日韩一区二区| 国产一区二区三区黄视频 | 国产女主播一区| 亚洲国产视频在线| 欧美一级精品在线| 亚洲成人免费电影| 97se狠狠狠综合亚洲狠狠| 国产亚洲成aⅴ人片在线观看| 日韩高清不卡一区| 国产日韩欧美高清| 在线影院国内精品| 亚洲卡通欧美制服中文| 97久久精品人人澡人人爽| 亚洲国产成人精品视频| www成人在线观看| 免费在线看成人av| 91精品久久久久久久99蜜桃 | 日本韩国一区二区三区视频| 亚洲国产sm捆绑调教视频| 久久久另类综合| 欧美性xxxxxx少妇| 亚洲第一会所有码转帖| 久久综合狠狠综合久久综合88 | 欧美r级电影在线观看| 日韩精彩视频在线观看| 欧美久久久久久蜜桃| 日日嗨av一区二区三区四区| 国产婷婷色一区二区三区| 欧美日韩中文精品| 午夜欧美大尺度福利影院在线看| 欧美日韩精品电影| 午夜精品视频一区| 欧美激情中文不卡| 99久久99久久久精品齐齐| 美女视频黄 久久| 久久久三级国产网站| 欧美性生活久久| 国产·精品毛片| 1024亚洲合集| 在线免费观看一区| 男人的j进女人的j一区| 亚洲欧美激情一区二区| 精品成a人在线观看| 成人午夜精品一区二区三区| 国产精品精品国产色婷婷| 色婷婷一区二区三区四区| 国产一区在线观看视频| 男男视频亚洲欧美| 图片区小说区国产精品视频| 一区二区三区在线视频播放| 在线播放亚洲一区| 欧美在线看片a免费观看| zzijzzij亚洲日本少妇熟睡| 亚洲一二三四在线| 亚洲人成小说网站色在线 | 国产精品夫妻自拍| 久久精品在线免费观看| 精品欧美一区二区在线观看 | 精品少妇一区二区| 欧美一区二区在线播放| 菠萝蜜视频在线观看一区| 久久精品国产99久久6| 国产精品久久久久久久久动漫 | 欧美精选一区二区| 在线视频欧美精品| 91久久精品一区二区二区| 91啪九色porn原创视频在线观看| 日韩精品91亚洲二区在线观看| 亚洲无人区一区| 亚洲国产精品视频| 日韩精品三区四区| 男男成人高潮片免费网站| 麻豆精品视频在线观看| 久久99国产乱子伦精品免费| 丝瓜av网站精品一区二区 | 国产精品一二三四五| 国产在线播放一区二区三区| 国产一二三精品| 成人午夜视频网站| 色综合天天综合给合国产| 免费在线观看成人| 精品一区二区三区香蕉蜜桃| 国内精品伊人久久久久av一坑| 亚洲成人手机在线| 日韩av一级片| 国产精品伊人色| 99久久精品国产麻豆演员表| 欧美做爰猛烈大尺度电影无法无天| 91成人网在线| 91精品国产综合久久福利| 国产亚洲综合av| 亚洲视频在线观看三级| 国产欧美精品一区二区色综合| 中文成人av在线| 26uuu久久天堂性欧美| 国产精品系列在线| 亚洲自拍偷拍网站| 美女视频黄久久| 成人激情校园春色| 欧美日韩中文字幕一区二区| 亚洲精品一区二区三区香蕉| 国产精品乱码一区二三区小蝌蚪| 一区二区三区欧美视频| 久久国产欧美日韩精品| 国产91精品久久久久久久网曝门| 日本久久电影网| 精品国产乱码久久久久久图片| 国产精品高潮呻吟| 日韩精品国产欧美| av一区二区三区四区| 欧美精品国产精品| 中文字幕乱码亚洲精品一区| 天天av天天翘天天综合网| 国产精品18久久久久久久久久久久| 日本道免费精品一区二区三区| 欧美电影免费观看高清完整版在线观看| 国产精品视频在线看| 日韩—二三区免费观看av| 99麻豆久久久国产精品免费优播| 91精品国产综合久久国产大片| 国产精品每日更新| 久久99日本精品| 欧美色图12p| 中文字幕一区在线观看| 精品影院一区二区久久久| 欧美日韩国产美| 亚洲天天做日日做天天谢日日欢 | 91视视频在线观看入口直接观看www | 一区二区三区日韩欧美精品| 极品美女销魂一区二区三区免费| 一本一本久久a久久精品综合麻豆| 欧美大片在线观看一区| 亚洲综合视频网| 成人综合婷婷国产精品久久蜜臀| 91.com视频| 亚洲午夜久久久久久久久久久| jizzjizzjizz欧美| 久久蜜桃av一区二区天堂| 免费不卡在线视频| 欧美体内she精高潮| 亚洲婷婷综合色高清在线| 国产成人鲁色资源国产91色综| 99精品偷自拍| 国产欧美一区视频| 国产最新精品免费| 日韩一级欧美一级| 日韩电影一区二区三区| 欧美日韩激情一区二区三区| 亚洲精品欧美专区| 色网站国产精品| 自拍偷自拍亚洲精品播放| 成人听书哪个软件好| 中文文精品字幕一区二区| 国产一区二区0| 久久这里都是精品| 国产又黄又大久久| 久久理论电影网| 国产高清精品网站| 国产亚洲午夜高清国产拍精品| 极品少妇xxxx精品少妇偷拍| 久久综合色播五月| 国产福利精品导航| 中文一区在线播放| 白白色 亚洲乱淫| 亚洲色欲色欲www在线观看| 色激情天天射综合网| 亚洲一级片在线观看| 9191成人精品久久| 久久99久久99精品免视看婷婷| 精品剧情在线观看| 国产精品18久久久久久vr| 中文字幕乱码亚洲精品一区| 色综合天天综合狠狠| 亚洲成人自拍网| 精品国产伦理网| 成人黄色小视频| a亚洲天堂av| 一区二区三区资源| 91精品午夜视频| 国产精品亚洲午夜一区二区三区| 国产精品视频一二| 欧美日韩一卡二卡| 久久精品久久99精品久久| 久久久精品综合| 在线观看日韩精品| 免费成人结看片| 国产精品久久久久婷婷二区次| 91国在线观看| 日本成人中文字幕| 国产精品美女久久久久久2018|