问题:
编译ffmpeg 4.1.3 android armv7-a版本。
nd-r14b 编译遇到udp.c mreqs.imr_multiaddr.s_addr error.
解决方法:
在用到 struct p_mreq_source的函数udp_set_multicast_sources 上方这么自定义:
struct my_ip_mreq_source { struct in_addr imr_multiaddr; /* IP multicast group address */ struct in_addr imr_interface; /* IP address of local interface */ struct in_addr imr_sourceaddr; /* IP address of multicast source */ };
然后修改 udp.c 中struct ip_mreq_source mreqs; 为struct my_ip_mreq_source mreqs;
这样就好了。功能完整无缺。
出这个错的原因是低版本ndk 头文件这么定义:
(头文件在ndk库里面 ./sysroot/usr/include/linux/in.h +181)
struct ip_mreq_source { __be32 imr_multiaddr; /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */ __be32 imr_interface; __be32 imr_sourceaddr; };
但是我们又不好改ndk头文件,还是自己重新定义一个为秒。