分享

关于ndk

 mediatv 2020-03-15

问题:

编译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头文件,还是自己重新定义一个为秒。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多