x264中x264_me_search_ref的被调用分析
2012-12-16 20:13
696 查看
该函数用于帧间预测运动矢量的搜索,在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次调用。
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次调用。
相关文章推荐
- x264中x264_me_search_ref的被调用分析
- x264_me_search_ref函数分析
- x264 - x264_me_search_ref
- ffmpeg调用x264编码器的过程分析
- ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析
- ffmpeg调用x264编码器的过程分析
- ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析 (转5)
- ffmpeg源码分析五:ffmpeg调用x264编码器的过程分析 (转5)
- x264源码分析 -- get_ref
- 云平台报调用远程接口失败的问题分析
- 算法分析与设计——LeetCode Problem.35 Search Insert Position
- c语言函数调用过程原理及函数栈帧分析
- C语言函数的递归和调用实例分析
- 函数指针声明与调用分析
- MapReduce中一次reduce方法的调用中key的值不断变化分析及源码解析
- hbase客户端源码分析调用
- kernel32.dll!API调用流程分析
- zz:虚函数绑定与调用时机分析
- ELK(elasticsearch+logstash+kibana)开源日志分析平台搭建
- 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪