Page 1 of 1

Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 23 Aug 2016 02:17
by soullessff
Hello,

I was using old DynamicTVVLCKit compilation for my tvOS project. I re-compile the last commit in master branch. When I add the new DynamicTVVLCKit, it works in simulator but I have problems with the device (AppleTV). I get:

Code: Select all

Undefined symbols for architecture arm64: "_merge16_arm64_neon", referenced from: _Open in libStaticTVLibvlc.a(libdeinterlace_plugin_la-deinterlace.o) "_merge8_arm64_neon", referenced from: _Open in libStaticTVLibvlc.a(libdeinterlace_plugin_la-deinterlace.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
The same problem in iOS.

Thanks!

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 29 Aug 2016 19:56
by ssbmaccom
+1
I also have this issue since the last commit of Aug. 16th.

I found the references in
vlc/modules/video_filter/deinterlace/deinterlace.c:705: p_sys->pf_merge = pixel_size == 1 ? merge8_arm64_neon : merge16_arm64_neon;

The missing symbols are located in vlc/modules/video_filter/deinterlace/merge_arm64.S
The object file is even part of libTVVLCKit.a, when building it with "Archive" in Xcode. The object is there and the symbol is defined.

Code: Select all

EsBit:VLCKit ssb$ nm libTVVLCKit.a | grep merge8_arm64 U _merge8_arm64_neon 0000000000000000 T merge8_arm64_neon EsBit:VLCKit ssb$ nm -anm libTVVLCKit.a | grep merge16_arm64 (undefined) external _merge16_arm64_neon 0000000000000078 (__TEXT,__text) external [no dead strip] merge16_arm64_neon
So the symbol is external and no dead strip. However - my App also complains about this as you mentioned.

No clue, maybe it is not exported...

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 30 Aug 2016 15:57
by soullessff
ssbmaccom I tried the last nightlies builds and the same happens except the compilation:

TVVLCKit-3.0-pre-20160829-0853.zip 29-Aug-2016 09:05 408M (http://nightlies.videolan.org/build/tvO ... 9-0853.zip)

but I found lag in the playback so annoying :(

primarygvp thanks for your spam dude! :-/

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 12 Sep 2016 17:08
by fkuehne
hey hey, this was just fixed.

Cheers

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 12 Sep 2016 23:29
by ssbmaccom
i trust you, that you tried to fix it. Unfortunately something else is broken now. Please see the build log below. And I started off with a fresh sandbox.

Code: Select all

libtool: compile: xcrun clang -DHAVE_CONFIG_H -I. -I.. -I../src -I../src -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator9.2.sdk -arch x86_64 -O3 -g -mtvos-version-min=9.0 -fembed-bitcode -arch x86_64 -mtvos-version-min=9.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator9.2.sdk -arch x86_64 -O3 -g -mtvos-version-min=9.0 -fembed-bitcode -I/Users/ssb/Projekte/ssb/AppleTV/VLCKit/MobileVLCKit/ImportedSources/vlc/contrib/AppleTV-x86_64-apple-darwin11-x86_64/include -I/Users/ssb/Projekte/ssb/AppleTV/VLCKit/MobileVLCKit/ImportedSources/vlc/contrib/AppleTV-x86_64-apple-darwin11-x86_64/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator9.2.sdk -arch x86_64 -O3 -g -mtvos-version-min=9.0 -fembed-bitcode -arch x86_64 -mtvos-version-min=9.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator9.2.sdk -arch x86_64 -O3 -g -mtvos-version-min=9.0 -fembed-bitcode -I/Users/ssb/Projekte/ssb/AppleTV/VLCKit/MobileVLCKit/ImportedSources/vlc/contrib/AppleTV-x86_64-apple-darwin11-x86_64/include -g -O2 -fheinous-gnu-extensions -Wall -c dsa.c -fno-common -DPIC -o dsa.o arcfour-amd64.S:30:1: error: poly1305-avx2-amd64.S:unknown directive 44:1: error: .tyunknown directivep e _g.ctryyp_ea r_cgfcoruyr__paomldy6143,0@5f_uanmcdt6i4o_na vx^2 _init_ext,@function; ^ arcfour-amd64.S:104:1: error: unknown directive .size _gcry_arcfour_amd64,.L__gcry_poly1305-sse2-amd64.Sa:rcfo43u:r1_: amerror: d64unknown directive_ end-_gc.rtyy_paer c_fgocurry__apmodl6y41 30^5 _amd64_sse2_init_ext,@function; ^ poly1305-avx2-amd64.S:402:1: error: unknown directive .size _gcry_poly1305_amd64_avx2_init_ext,.-_gcry_poly1305_amd64_avx2_init_ext; ^ poly1305-sse2-amd64.S:284:1: error: unknown directive .sipoly1305-avx2-amd64.Sz:e407 :_1g: crerror: y_punknown directiveo ly1.3t0y5p_ea m_dg6c4r_ys_speo2l_yi1n3i0t5__eaxmtd,6.4-__agvcxr2y__bploolcyk1s3,0@5f_uanmcdt6i4o_ns;s e2^_ init_ext; ^ poly1305-sse2-amd64.S:289:1: error: unknown directive .type _gcry_poly1305_amd64_sse2_finish_ext,@function; ^ poly1305-sse2-amd64.S:435:1: error: unknown directive .size _gcry_poly1305_amd64_sse2_finish_ext,.-_gcry_poly1305_amd64_sse2_finish_ext; ^ poly1305-sse2-amd64.S:440:1: error: unknown directive .type _gcry_poly1305_amd64_sse2_blocks,@function; ^ poly1305-avx2-amd64.S:728:1: error: unknown directive .size _gcry_poly1305_amd64_avx2_blocks,.-_gcry_poly1305_amd64_avx2_blocks; ^ poly1305-avx2-amd64.S:733:1: error: unknown directive .type _gcry_poly1305_amd64_avx2_finish_ext,@function; ^ make[2]: *** [arcfour-amd64.lo] Error 1 make[2]: *** Waiting for unfinished jobs.... poly1305-avx2-amd64.S:960:1: error: unknown directive .size _gcry_poly1305_amd64_avx2_finish_ext,.-_gcry_poly1305_amd64_avx2_finish_ext; ^ poly1305-sse2-amd64.S:1041:1: error: unknown directive .size _gcry_poly1305_amd64_sse2_blocks,.-_gcry_poly1305_amd64_sse2_blocks; ^ make[2]: *** [poly1305-avx2-amd64.lo] Error 1 make[2]: *** [poly1305-sse2-amd64.lo] Error 1 des-amd64.S:195:1: error: unknown directive .type _gcry_3des_amd64_crypt_block,@function; ^ des-amd64.S:281:1: error: unknown directive .size _gcry_3des_amd64_crypt_block,.-_gcry_3des_amd64_crypt_block; ^ des-amd64.S:468:1: error: unknown directive .type _gcry_3des_amd64_crypt_blk3,@function; ^ des-amd64.S:538:1: error: unknown directive .size _gcry_3des_amd64_crypt_blk3,.-_gcry_3des_amd64_crypt_blk3; ^ des-amd64.S:542:1: error: unknown directive .type _gcry_3des_amd64_cbc_dec,@function; ^ des-amd64.S:614:1: error: unknown directive .size _gcry_3des_amd64_cbc_dec,.-_gcry_3des_amd64_cbc_dec; ^ des-amd64.S:618:1: error: unknown directive .type _gcry_3des_amd64_ctr_enc,@function; ^ des-amd64.S:692:1: error: unknown directive .size _gcry_3des_amd64_cbc_dec,.-_gcry_3des_amd64_cbc_dec; ^ des-amd64.S:696:1: error: unknown directive .type _gcry_3des_amd64_cfb_dec,@function; ^ des-amd64.S:767:1: error: unknown directive .size _gcry_3des_amd64_cfb_dec,.-_gcry_3des_amd64_cfb_dec; ^ make[2]: *** [des-amd64.lo] Error 1 make[1]: *** [install-recursive] Error 1 make: *** [.gcrypt] Error 2
At least, now nightlies are available and I will try these. Are they built with bitcode creation?

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 13 Sep 2016 09:55
by fkuehne
This is a new issue completely unrelated to the previous one and only affects the x86_64 (aka simulator) slice of TVVLCKit. Looking into it right now.

Of course, our nightly builds include bitcode, but the latest available still exhibits the aforementioned linker issue.

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 13 Sep 2016 11:28
by fkuehne
The x86_64 assembly issue is fixed as well now.

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 15 Sep 2016 19:21
by ssbmaccom
Thanks a lot. I had to clean the VLC clone in my sandbox, but then it built fine.

Well, some deinterlacers now produce artefacts, but thats a different construction site.
And tracksinfo returns empty arrays... I check on my side...

Anyway - thanks for the ability to get the new build done - and yes the Sky HD issue also seems to be solved...

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 15 Sep 2016 19:23
by fkuehne
Please file bug reports with screenshots regarding the deinterlacing issues. Those should only occur on device, not in the simulator, but it is indeed possible that we introduced a regression there.

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 19 Sep 2016 14:25
by ssbmaccom
OK, with the nightly I am currently using (waiting for tomorrows nightly then) I haven't seen the issue in Simulator. Not sure wether I tested on device with my local build or the nightly.

With madiaplayer.tracksinfo I was able to fix with using different options (0x01 instead of 0x06). Not sure why, but well.

Still progressive video streams (eg. Arte HD, 720p) are reported with the wrong frame rate and denominator. frame rate is 100, denominator is 1. I would expect denominator to be 2 so I get the correct 50 fps for progressive video. Well I can live with the wrong info - but it looks like libVLC is also misinterpreting the info. Even on progressive streams it uses a deinterlacer (by default "blend"), even there is nothing to deinterlace. Usually, libVLC is set to auto-enable deinterlacers, so it disables deinterlacing for progressive streams.

But maybe it is better to post that in a separate thread - and there had been one already... I have to search for this.

Re: Last commit master branch: Undefined symbols (iOS and tvOS)

Posted: 19 Sep 2016 14:38
by fkuehne
What is your trac ticket number on this?