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

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

?? t264.h

?? T264是中國在JM系列和X264的基礎上尋找的新的H264編程途徑
?? H
?? 第 1 頁 / 共 2 頁
字號:
    int32_t pic_init_qp_minus26;
    int32_t pic_init_qs_minus26;
    int32_t chroma_qp_index_offset;
    int32_t deblocking_filter_control_present_flag;
} T264_pic_set_t;

typedef struct
{
    int32_t first_mb_in_slice;
    int32_t slice_type;
    int32_t pic_id;
    int32_t frame_num;
    int32_t idr_pic_id;
    /* pic_oder_cnt_type == 0*/
    int32_t pic_order_cnt_lsb;
    int32_t delta_pic_order_cnt_bottom;
    int32_t direct_spatial_mv_pred_flag;
    /*P frame*/
    int32_t num_ref_idx_active_override_flag;
    int32_t slice_qp_delta;
    int32_t ref_pic_list_reordering_flag_l0;
    int32_t no_output_of_prior_pics_flag;
    int32_t long_term_reference_flag;
    int32_t adaptive_ref_pic_marking_mode_flag;
	/* for CABAC */
	int32_t cabac_init_idc;
} T264_slice_t;

typedef struct
{
    int32_t ver;
    int32_t flags;
} T264_custom_set_t;

typedef struct
{
    void (*proc)(T264_t* t, void* data, int32_t state);
    void (*close)(T264_t* t, void* data);
    void* handle;
    int32_t ret;    // ret value, optional
} T264_plugin_t;

typedef struct
{
    int8_t  refno;
    int16_t x;
    int16_t y;
} T264_vector_t;

// this struct should keep 16 bytes align
typedef struct
{
    // intra 4x4 mode
    uint8_t     mode_i4x4[16];
    // inter sub partition size(if no sub partition -1)
    uint8_t     submb_part[16];
    // inter 4x4 block mv
    T264_vector_t vec[2][4 * 4];
	// for CABAC, mv delta
	int16_t		mvd[2][4*4][2];
    // non zero count
    uint8_t     nnz[16 + 4 + 4];
	// sad
	uint32_t    sad;

    // I16x16, I4x4, P_MODE, ....
    uint8_t     mb_mode;
    uint8_t     mb_mode_uv;
    // intra 16x16 mode
    uint8_t     mode_i16x16;
    // inter
    uint8_t     mb_part;
    // rate control
    int8_t      mb_qp_delta; 

	// for CABAC, the following field should be saved in the context
	uint8_t     is_copy;
	uint16_t    cbp_y;
	uint16_t    cbp_c;
	uint16_t	cbp;
    // just pad to 16 bytes aligned
    uint8_t     pad[CACHE_SIZE - 7];
} T264_mb_context_t;

typedef struct
{
    uint8_t*  Y[4], *U, *V;
    int32_t   poc;
    T264_mb_context_t* mb;
    int32_t   qp;
} T264_frame_t;

typedef struct T264_search_context_t
{
    // all candidate
    T264_vector_t* vec;
    int32_t vec_num;
    T264_vector_t vec_best;
    int32_t height;
    int32_t width;
    int8_t limit_x;
    int8_t limit_y;
    int32_t offset;
    int32_t mb_part;
    int32_t list_index;
} T264_search_context_t;

//this is for CABAC

typedef struct
{
	/* model */
	struct
	{
		int i_model;
		int i_cost;
	} slice[3];

	/* context */
	struct
	{
		int i_state;
		int i_mps;
		int i_count;
	} ctxstate[399];

	/* state */
	int i_low;
	int i_range;

	int i_sym_cnt;

	/* bit stream */
	int b_first_bit;
	int i_bits_outstanding;
	void *s;

} T264_cabac_t;

#ifndef _PREDICT_H_1
#define _PREDICT_H_1
typedef void (*T264_predict_16x16_mode_t)(uint8_t* dst, int32_t dst_stride, uint8_t* top, uint8_t* left);
typedef void (*T264_predict_4x4_mode_t)  (uint8_t* dst, int32_t dst_stride, uint8_t* top, uint8_t* left);
typedef void (*T264_predict_8x8_mode_t)  (uint8_t* dst, int32_t dst_stride, uint8_t* top, uint8_t* left);
#endif

typedef void (*expand8to16_t)(uint8_t* src, int32_t src_stride, int32_t quarter_width, int32_t quarter_height, int16_t* dst);
typedef void (*expand8to16sub_t)(uint8_t* pred, int32_t quarter_width, int32_t quarter_height, int16_t* dst, uint8_t* src, int32_t src_stride);
typedef void (*contract16to8_t)(int16_t* src, int32_t quarter_width, int32_t quarter_height, uint8_t* dst, int32_t dst_stride);
typedef void (*contract16to8add_t)(int16_t* src, int32_t quarter_width, int32_t quarter_height, uint8_t* org, uint8_t* dst, int32_t dst_stride);
typedef void (*memcpy_stride_u_t)(void* src, int32_t width, int32_t height, int32_t src_stride, void* dst, int32_t dst_stride);
typedef uint32_t (*T264_cmp_t)(uint8_t* src, int32_t src_stride, uint8_t* data, int32_t dst_stride);
typedef void (*T264_pia_t)(uint8_t* p1, uint8_t* p2, int32_t p1_stride, int32_t p2_stride, uint8_t* dst, int32_t dst_stride);
typedef uint32_t (*T264_satd_i16x16_u_t)(uint8_t* src, int32_t src_stride, uint8_t* data, int32_t dst_stride);

typedef void (*T264_dct_t)(int16_t* data);
typedef void (*T264_quant4x4_t)(int16_t* data, const int32_t Qp, int32_t is_intra);
typedef void (*T264_quant4x4dc_t)(int16_t* data, const int32_t Qp);
typedef void (*T264_quant2x2dc_t)(int16_t* data, const int32_t Qp, int32_t is_intra);
typedef void (*T264_iquant_t)(int16_t* data, const int32_t Qp);

typedef void (*T264_eighth_pixel_mc_u_t)(uint8_t* src, int32_t src_stride, uint8_t* dst, int16_t mvx, int16_t mvy, int32_t width, int32_t height);
typedef void (*T264_interpolate_halfpel_t)(uint8_t* src, int32_t src_stride, uint8_t* dst, int32_t dst_stride, int32_t width, int32_t height);
typedef void (*T264_pixel_avg_t)(uint8_t* p1, uint8_t* p2, int32_t p1_stride, int32_t p2_stride, uint8_t* dst, int32_t dst_stride, int32_t w, int32_t h);
typedef uint32_t (*T264_search_t)(T264_t* t, T264_search_context_t* context);
typedef void (*T264_emms_t)();
typedef decoder_state_t (*action_t)(T264_t* t);

typedef struct
{
    // COPY BEGIN
    // NOTE: copied from T264_mb_cache_t except padding words!!!
    // intra 4x4 mode
    uint8_t     mode_i4x4[16];
    // inter sub partition size(if no sub partition -1)
    uint8_t     submb_part[16];
    // inter 4x4 block mv
    T264_vector_t vec[2][4 * 4];
	// for CABAC, mv delta
	int16_t		mvd[2][4*4][2];
    // non zero count
    uint8_t     nnz[16 + 4 + 4];
    // sad
    uint32_t sad;

    // I16x16, I4x4, P_MODE, ....
    uint8_t     mb_mode;
    uint8_t     mb_mode_uv;
    // intra 16x16 mode
    uint8_t     mode_i16x16;
    // inter
    uint8_t     mb_part;
    // rate control
    int8_t      mb_qp_delta; 
	// for CABAC, the following 4 fields should be saved in contexts
	uint8_t     is_copy;
	uint16_t    cbp_y;
	uint16_t    cbp_c;
	uint16_t	cbp;
    // COPY END

    T264_mb_context_t* context;
    uint8_t     mb_part2[2];    // b slice use

    int32_t     mb_neighbour;
    int16_t     mb_x;
    int16_t     mb_y;
    int16_t		mb_xy;
    int32_t     lambda;

    uint8_t*    src_y;
    uint8_t*    dst_y;	
    uint8_t*    src_u;
    uint8_t*    dst_u;
    uint8_t*    src_v;
    uint8_t*    dst_v;

    // save the predict value for intra encode
    DECLARE_ALIGNED_MATRIX_H(pred_i16x16, 16, 16, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX_H(pred_i8x8u, 8, 8, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX_H(pred_i8x8v, 8, 8, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX_H(pred_p16x16, 16, 16, uint8_t, CACHE_SIZE);
 
    int16_t     dct_y_z[16][4*4];               // 塊進行Z掃描后的系數
    int16_t     dct_uv_z[2][4][4*4];
    int16_t     dc4x4_z[16];                    // Z掃描后的16個DC系數
    int16_t     dc2x2_z[2][4];                  // Z掃描后的4個DC系數
    // for CABAC, the following 4 fileds have been moved to the beginning
    uint8_t     sub_is_copy[4];

    int8_t i4x4_pred_mode_ref[5 * 8];   // see load_context for detail layout
    uint8_t nnz_ref[6 * 8];
	uint32_t sad_ref[3]; //left, top, top-right
    struct
    {
        T264_vector_t vec[2];
        uint8_t part;
        uint8_t subpart;
    } vec_ref[5 * 8];
	
	// for CABAC, mv delta
	int16_t mvd_ref[2][5 * 8][2];
} T264_mb_t;

struct T264_t
{
    T264_frame_t refn[MAX_REFFRAMES];
    T264_frame_t* ref[2][MAX_REFFRAMES];
    int32_t refl0_num;
    int32_t refl1_num;
    T264_frame_t cur;
    T264_frame_t* rec;
    int32_t     width;
    int32_t     height;
    int32_t     stride;
    int32_t     stride_uv;
    int32_t     edged_stride;
    int32_t     edged_stride_uv;
    int32_t     edged_width;
    int32_t     edged_height;
    int32_t     qp_y, qp_uv;
    void*        bs;
    uint8_t*    bs_buf;
    uint32_t    flags;
    int32_t     mb_width, mb_height;
	int32_t		mb_stride;
    uint32_t    idr_pic_id;
    /* the frame unique id in the whole encoding session, for statistic(rc uses it too) */
    uint32_t    frame_id;
    /* the frame_num in the bitstream semantic, for generating bitstream only */
    uint32_t    frame_num;
    /* the frame unique id in the current encoding gop, for deciding the slice type usage */
    uint32_t    frame_no;
    /* the frame unique id that the last key frame id */
    uint32_t    last_i_frame_id;
    uint32_t    poc;
    uint32_t    slice_type;
    int32_t     skip;
    uint32_t    sad_all;
    T264_frame_t pending_bframes[MAX_BREFNUMS];
    int32_t     pending_bframes_num;
    int32_t     header_bits;
    int32_t     frame_bits;

    /* ++ decoder section ++ */
    /* source section */
    uint8_t* src_buf;   /* source buffer start ptr */ 
    uint8_t* src_end;
    uint8_t* nal_buf;   /* buffer one whole nal unit */
    int32_t nal_len;    /* one nal unit length */

    uint32_t shift;     /* nal decode use */
    uint32_t shift1;

    action_t action;

    int32_t need_deblock;
    T264_frame_t* cur_frame;
    /* frame rate info */
    int32_t aspect_ratio;
    int32_t video_format;
    T264_frame_t output;
    /* -- decoder section -- */

    T264_param_t   param;
    T264_nal_t     nal;
    T264_seq_set_t ss;
    T264_pic_set_t ps;
    T264_slice_t   slice;
    T264_stat_t    stat;

    T264_mb_t      mb;
    int16_t        subpel_pts;
    T264_plugin_t  plugins[MAX_PLUGINS];

	//for CABAC
	T264_cabac_t cabac;

    int32_t        plug_num;
    T264_predict_16x16_mode_t pred16x16[4 + 3];
	T264_predict_8x8_mode_t   pred8x8[4 + 3];
	T264_predict_4x4_mode_t   pred4x4[9 + 3];
	T264_cmp_t cmp[8];
    T264_cmp_t sad[8];
    T264_pia_t pia[9];  //for pixel avearage func

    T264_dct_t fdct4x4;
    T264_dct_t fdct4x4dc;
    T264_dct_t fdct2x2dc;
    T264_dct_t idct4x4;
    T264_dct_t idct4x4dc;
    T264_dct_t idct2x2dc;

    T264_quant4x4_t   quant4x4;
    T264_quant4x4dc_t quant4x4dc;
    T264_quant2x2dc_t quant2x2dc;
    T264_iquant_t     iquant4x4;
    T264_iquant_t     iquant4x4dc;
    T264_iquant_t     iquant2x2dc;

    expand8to16_t     expand8to16;
    contract16to8_t   contract16to8;
    expand8to16sub_t  expand8to16sub;
    contract16to8add_t contract16to8add;
    memcpy_stride_u_t   memcpy_stride_u;
    T264_eighth_pixel_mc_u_t eighth_pixel_mc_u;
    T264_interpolate_halfpel_t interpolate_halfpel_h;
    T264_interpolate_halfpel_t interpolate_halfpel_v;
    T264_interpolate_halfpel_t interpolate_halfpel_hv;
    T264_pixel_avg_t pixel_avg;
    T264_satd_i16x16_u_t T264_satd_16x16_u;
    T264_search_t   search;
    T264_emms_t emms;
};

/* private func(for encoder & decoder share) */
void T264_init_cpu(T264_t* t);
void T264_mb_load_context(T264_t* t, int32_t mb_y, int32_t mb_x);
void T264_extend_border(T264_t* t, T264_frame_t* f);
void T264_interpolate_halfpel(T264_t* t, T264_frame_t* f);

/* extern api */
T264_t* T264_open(T264_param_t* para);
void T264_close(T264_t* t);
int32_t T264_encode(T264_t* t, uint8_t* src, uint8_t* dst, int32_t dst_size);

T264_t* T264dec_open();
void T264dec_close(T264_t* t);
void T264dec_buffer(T264_t* t, uint8_t* buf, int32_t len);
decoder_state_t T264dec_parse(T264_t* t);
T264_frame_t* T264dec_flush_frame(T264_t* t);

#ifdef __cplusplus
};
#endif

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩在线播放| 亚洲人成网站色在线观看| 国产欧美一区二区三区在线看蜜臀| 日本一区免费视频| 亚洲一区成人在线| 国产精品12区| 精品女同一区二区| 三级不卡在线观看| 在线视频一区二区三| 国产日产欧美一区| 激情综合色播五月| 制服.丝袜.亚洲.中文.综合| 一区免费观看视频| 高清国产午夜精品久久久久久| 91精品国产综合久久精品麻豆| 一区二区三区美女视频| www.视频一区| 日本一区二区久久| 成人网页在线观看| 中文字幕av资源一区| 国产成人精品一区二区三区四区 | 久久精品男人天堂av| 日韩精品免费专区| 欧美高清视频在线高清观看mv色露露十八 | 91在线你懂得| 国产欧美一区二区精品性色| 国产综合色视频| 久久久精品日韩欧美| 国产高清视频一区| 中文字幕欧美激情| 99精品视频一区二区| 国产精品久久久久永久免费观看 | 国产精品免费免费| 国产99精品视频| 精品国产伦理网| 国产麻豆一精品一av一免费 | 国产高清在线观看免费不卡| 久久一二三国产| 国产精品自拍三区| 国产日本欧美一区二区| 成人av电影在线| 一区二区视频在线| 欧美日韩日日骚| 久久99国产精品成人| 国产婷婷色一区二区三区在线| 国产99久久久国产精品潘金| 国产精品不卡一区二区三区| 91国偷自产一区二区使用方法| 亚洲一二三四区| 日韩欧美精品三级| 成人永久aaa| 一区二区三区欧美在线观看| 9191精品国产综合久久久久久| 久久精品国产99| 国产精品无人区| 欧美日韩精品综合在线| 精品一区二区三区在线观看| 久久精品夜色噜噜亚洲a∨| 91视频一区二区| 免费在线看成人av| 中文字幕乱码亚洲精品一区| 欧美在线色视频| 国产精品一区二区三区四区| 亚洲啪啪综合av一区二区三区| 91麻豆精品国产91久久久资源速度 | 精品国产一区二区三区久久影院| 国产**成人网毛片九色| 亚洲国产日韩综合久久精品| 精品久久久久久无| 精品日韩一区二区三区免费视频| 国产毛片精品视频| 日韩毛片在线免费观看| 欧美日韩国产系列| 顶级嫩模精品视频在线看| 亚洲成a天堂v人片| 国产精品久久综合| 欧美一级日韩一级| 91福利在线免费观看| 国内精品国产成人| 偷拍亚洲欧洲综合| 国产精品久久影院| 欧美一二三区在线| 色婷婷亚洲婷婷| 国产精品一级片| 免费在线观看视频一区| 亚洲国产一区二区三区青草影视| 日本一区二区综合亚洲| 日韩欧美国产精品| 欧美日韩精品一区二区三区蜜桃| jlzzjlzz亚洲日本少妇| 久久国产精品一区二区| 亚洲国产日韩a在线播放| 中文字幕五月欧美| 色女孩综合影院| 成人激情午夜影院| 国产一区二区福利| 久久精品国产久精国产| 亚洲欧美视频在线观看| 国产精品毛片久久久久久久| 26uuu成人网一区二区三区| 欧美肥妇bbw| 欧美日本不卡视频| 在线观看日韩电影| 一本大道久久a久久综合| 成人爱爱电影网址| 成人精品国产免费网站| 国产不卡在线视频| 国产成人自拍高清视频在线免费播放| 欧美aaaaa成人免费观看视频| 香蕉加勒比综合久久| 亚洲一二三专区| 五月激情综合婷婷| 亚洲妇女屁股眼交7| 亚洲一区二区欧美激情| 亚洲成a人在线观看| 图片区小说区国产精品视频| 丝袜美腿一区二区三区| 日本成人超碰在线观看| 蜜桃久久久久久久| 激情五月激情综合网| 国产一区二区影院| 国产麻豆成人传媒免费观看| 国产大陆精品国产| 不卡的av在线| 91福利在线免费观看| 欧美日韩国产经典色站一区二区三区| 欧美日本在线一区| 日韩一区二区免费高清| 欧美成人精品福利| 久久久久久综合| 国产精品天美传媒沈樵| 亚洲三级电影网站| 日韩精彩视频在线观看| 国产在线一区观看| 91首页免费视频| 欧美高清激情brazzers| 精品99一区二区三区| 欧美国产一区在线| 一区二区三区久久| 美女尤物国产一区| 不卡区在线中文字幕| 欧美色爱综合网| 精品盗摄一区二区三区| 亚洲欧洲精品一区二区三区 | 日韩一区二区免费在线电影| 久久综合av免费| 日韩美女视频一区二区| 五月综合激情网| 国产精品一品二品| 欧美性猛交xxxx黑人交| 精品国产乱码91久久久久久网站| 国产精品你懂的在线欣赏| 亚洲亚洲人成综合网络| 国产精品 欧美精品| 欧美在线制服丝袜| 国产欧美一区二区精品仙草咪 | 国产一区二区女| 色婷婷综合久久久中文字幕| 2020国产精品| 亚洲最大成人综合| 国产激情视频一区二区在线观看| 欧美在线不卡视频| 国产日韩欧美高清在线| 奇米影视一区二区三区| 97国产一区二区| 精品盗摄一区二区三区| 午夜精品久久久久久久99水蜜桃 | 国产精品18久久久| 日韩一区国产二区欧美三区| 日韩美女视频19| 国产精品99久久久久久久女警| 欧美日韩国产首页| 亚洲精选视频在线| 成人sese在线| 久久精品视频网| 美女脱光内衣内裤视频久久网站 | 亚洲宅男天堂在线观看无病毒| 国产一区二区三区在线看麻豆| 欧美日韩国产精品自在自线| 日韩一区有码在线| 粉嫩aⅴ一区二区三区四区五区| 日韩一级精品视频在线观看| 午夜视频在线观看一区二区| 91麻豆精品秘密| 国产精品国产三级国产aⅴ中文| 国产一区二区中文字幕| 欧美白人最猛性xxxxx69交| 亚洲午夜一区二区三区| 色老汉一区二区三区| 亚洲天堂网中文字| 97久久精品人人澡人人爽| 国产精品看片你懂得| zzijzzij亚洲日本少妇熟睡| 日本一区二区三区免费乱视频| 九九久久精品视频| 久久精品一区蜜桃臀影院| 国产成人午夜99999| 久久精品免费在线观看| 成人污污视频在线观看| 亚洲欧洲一区二区三区|