bilibili / ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
GNU General Public License v2.0
32.44k stars 8.11k forks source link

iOS IJK_REGISTER_PROTOCOL 宏定义对应的函数全部为空函数 #3349

Closed jeffasd closed 7 years ago

jeffasd commented 7 years ago
IJK_REGISTER_PROTOCOL(ijkio);
IJK_REGISTER_PROTOCOL(async);
IJK_REGISTER_PROTOCOL(ijklongurl);
IJK_REGISTER_PROTOCOL(ijktcphook);
IJK_REGISTER_PROTOCOL(ijkhttphook);
IJK_REGISTER_PROTOCOL(ijksegment);

这几个宏定义对应的函数 ijkav_register_ijkio_protocol ijkav_register_async_protocol ijkav_register_ijklongurl_protocol ijkav_register_ijktcphook_protocol ijkav_register_ijkhttphook_protocol ijkav_register_ijksegment_protocol 但是这几个函数全部没有定义 这个什么情况?

raymond1012 commented 7 years ago

define IJK_REGISTER_PROTOCOL(x) \

{                                                                   \
    extern URLProtocol ijkimp_ff_##x##_protocol;                        \
    int ijkav_register_##x##_protocol(URLProtocol *protocol, int protocol_size);\
    ijkav_register_##x##_protocol(&ijkimp_ff_##x##_protocol, sizeof(URLProtocol));  \
}
jeffasd commented 7 years ago

ijkav_register_ijkio_protocol ijkav_register_async_protocol ijkav_register_ijklongurl_protocol ijkav_register_ijktcphook_protocol ijkav_register_ijkhttphook_protocol ijkav_register_ijksegment_protocol 这些函数体没有实现,是个空定义,就是说 IJK_REGISTER_PROTOCOL(ijkio); IJK_REGISTER_PROTOCOL(async); IJK_REGISTER_PROTOCOL(ijklongurl); IJK_REGISTER_PROTOCOL(ijktcphook); IJK_REGISTER_PROTOCOL(ijkhttphook); IJK_REGISTER_PROTOCOL(ijksegment); 这些协议都没有注册 这是打印log ===== custom modules begin ===== register demuxer : ijklivehook ===== custom modules end =====

jeffasd commented 7 years ago

查看了 ijkavformat/allformats.c发现这个文件最近几个版本经常改动是否无意间把这些协议注册函数给忽略了?