现在的位置: 首页 > 综合 > 正文

x264中x264_me_search_ref的被调用分析

2013年04月14日 ⁄ 综合 ⁄ 共 3057字 ⁄ 字号 评论关闭

该函数用于帧间预测运动矢量的搜索,在x264中被多次调用,怎么知道哪些函数调用了它呢?

void x264_me_search_ref( x264_t *h, x264_me_t *m, int16_t (*mvc)[2], int i_mvc, int *p_fullpel_thresh );
#define x264_me_search( h, m, mvc, i_mvc)\
    x264_me_search_ref( h, m, mvc, i_mvc, NULL )

 

可以故意多加一个参数,int a,这样调用函数因为参数不一致,就会报错,这样,那些调用参数就浮出水面了

void x264_me_search_ref( x264_t *h, x264_me_t *m, int16_t (*mvc)[2], int i_mvc, int *p_fullpel_thresh,int a );

 

修改后,保存一下,执行一次make命令,编译器提示报错如下:

 

chase@chase-VirtualBox:~/workspace/x264$ make
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -march=i686 -mfpmath=sse -msse -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/analyse.o encoder/analyse.c
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p16x16’中:
encoder/analyse.c:1447:13: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c:1420:10: 警告: 未使用的变量‘i_MSearch_thresh’ [-Wunused-variable]
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p8x8_mixed_ref’中:
encoder/analyse.c:1558:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p8x8’中:
encoder/analyse.c:1624:9: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p16x8’中:
encoder/analyse.c:1692:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p8x16’中:
encoder/analyse.c:1757:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p4x4’中:
encoder/analyse.c:1879:9: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p8x4’中:
encoder/analyse.c:1918:9: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_p4x8’中:
encoder/analyse.c:1954:9: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_b16x16’中:
encoder/analyse.c:2108:13: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_b8x8_mixed_ref’中:
encoder/analyse.c:2401:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_b8x8’中:
encoder/analyse.c:2488:13: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_b16x8’中:
encoder/analyse.c:2567:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
encoder/analyse.c: 在函数‘x264_mb_analyse_inter_b8x16’中:
encoder/analyse.c:2661:17: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明
In file included from encoder/analyse.c:4219:0:
encoder/slicetype.c: 在函数‘x264_slicetype_mb_cost’中:
encoder/slicetype.c:621:13: 错误: 提供给函数‘x264_me_search_ref’的实参太少
encoder/me.h:64:6: 附注: 在此声明

由此可知,调用x264_me_search_ref函数的包括:

x264_mb_analyse_inter_p16x16

x264_mb_analyse_inter_p8x8_mixed_ref

x264_mb_analyse_inter_p8x8

x264_mb_analyse_inter_p16x8

x264_mb_analyse_inter_p8x16

x264_mb_analyse_inter_p4x4

x264_mb_analyse_inter_p8x4

x264_mb_analyse_inter_p4x8

x264_mb_analyse_inter_b16x16

x264_mb_analyse_inter_b8x8_mixed_ref

x264_mb_analyse_inter_b8x8

x264_mb_analyse_inter_b16x8

x264_mb_analyse_inter_b8x16’

x264_slicetype_mb_cost

总共14个函数,14次调用。

抱歉!评论已关闭.