iosvlc.m provides a binary usable as an iOS application, forwarding the
VLC arguments just like VLC on desktop. It allows easier iteration on
vlccore development for iOS, without the need to test in a VLCKit
application like VLC for iOS or new external application.
It is currently designed for usage with dynamic plugins.
To develop with it, you must generate a .ipa archive containing both
the resulting binary as executable, a PkgInfo file, an Info.plist file
describing the package and the libs (libvlc.dylib, libvlccore.dylib, and
every plugin .dylib or additional convenience libraries that are not
linked statically in the Frameworks/ directory. It must then be signed
with a developer certificate allowed by Apple and provisionned with a
mobileprovision file allowing installation on the given device for the
same developer certificate.
Then, tools like libimobiledevice can be used to start the application
with additional arguments or environment variables. They can also be
added in XCode through the "Edit Scheme" menu.
A big part of the iOS-specific code has been originally written by
Marvin Scholz in a more complete libVLC ios sample.
Co-authored-by: Marvin Scholz <epirat07@gmail.com>
Cherry-picked and adapted from commits:
e16f4d9bb60bfe88030196bee41831904998afec54c392d7be
This helper will print on the standard input the failing test-suite.log and
core dump in case of a failing make check.
This script should be used by build bots in order to find the root cause of
failing tests.
See https://jenkins.videolan.org/job/vlc-continuous/job/vlc-cont-debian-x86_64/5852/console
(cherry picked from commit dabb85a3e3)
Signed-off-by: Konstantin Pavlov <thresh@videolan.org>
vlc arguments are passed by environment variable in order to don't mess
libfuzzer arguments handling:
- "VLC_TARGET" to pass the target name (or demux name).
- "V" to specify the verbose level.
DIR is the dir path of the libFuzzer.a static library.
When used, it forces a static build without vlc binary and enable sanitize
coverage.
How to fetch and build libFuzzer.a from llvm.org:
$ git clone https://git.llvm.org/git/compiler-rt
$ cd compiler-rt/lib/fuzzer
for gcc:
$ CXX=g++ ./build.sh
for clang:
$ ./build.sh
This a partial merge of the work done by Shaleen during GSOC 2017. See
https://code.videolan.org/GSoC2017/shalzz/vlc.git
- don't match 2 possible slaves between each others
- The slave name len should not be twice longer than the item name len.
(avoid matching "2016 - blabla.aac" with "20.mkv" for example)
The matching algorithm is still quite dumb and far from perfect. We should
detect item as slaves only if they have a language indication in their path
name.
Fixes#18913
This includes support for statically linked plugins. It vastly increases
the test iteration speed, which is critical for fuzz testing.
Furthermore, it is necessary for coverage-driven fuzz testing to work at
all.
This also provides a (manually compiled only) back-end for LLVM's
LibFuzzer using mostly the same code.
1) Debugging, regression testing or unguided fuzzing:
- Make a normal build (debug and sanitization recommended).
- Execute: "test/vlc-demux-run [demux name] <file path>"
2) American Fuzzy Lop run:
- Make a *static* build with AFL as the toolchain.
- (Where applicable) perform adequate religious luck granting
offerings or other rites.
- Run AFL with test/vlc-demux-run as the fuzzed executable.
3) LibFuzzer:
- Make a preferrably static build with Clang as the toolchain.
- Manually build test/vlc-demux-libfuzzer.
- Run the executable with the LibFuzzer command line parameters syntax.
This adds transitional vlc_tls_ServerSessionCreateFD() helper for
compatiblity. This is only to maintain sequential builds. The helper
will be removed shortly.
The function does not open MRLs, as correctly described in its
documentation, as such it is rather unfortunate that its name uses MRL
instead of URL (especially given that it cannot handle MRLs).
These changes are simply renaming all occurrences of the function, so
that the behavior of the function is properly reflected by its name.
Signed-off-by: Thomas Guillem <thomas@gllm.fr>
On Apple platforms, ALPN does not work as securetransport does
not provide any public API for that. So do not check for that
feature until support is added.