Hacker Newsnew | past | comments | ask | show | jobs | submit | martz's commentslogin

Working mostly on video, local AI, and developer tools.

I maintain LibVLCSharp (https://github.com/videolan/libvlcsharp) and work on VLC for Unity (https://videolabs.io/store/unity). Lately I've been building VLCLR, which lets you write native VLC plugins in C#, and experimenting with local AI for real-time video analysis.

Also working on Kyber for Unity (https://gitlab.com/mfkl/kyber-unity), bringing low-latency video and robotics tooling into Unity.


yes this is good too, actually started contributing to this :)


RTSP support, twitch-style in-game visio, any kind of non-game Unity apps (there are many), 360 video playback, mediaplayer in VR headset, simulators of all kinds, etc..


Recently added support for Linux to VLC for Unity, with full hardware decoding.

It uses OpenGL rendering through GLX and EGL, with DMA-BUF texture sharing to pass video frames efficiently to Unity’s renderer.

Only x86_64 is supported at this time. In the future, I will add ARM64 support as well as Vulkan.


Don't forget to build 'correct' ELF64 binaries for broad elf(glibc)/linux distro support (-static-libgcc -static-libstdc++, and tight glibc ABI version control with binutils VERSION scripts).

At least those build options should be default.


thanks for your comment, will look into it!


Let me add a bit more:

The part which in missed all the time is the control of the glibc ABI version. Either you link with an "old" glibc, or you go 'Right Way(TM)', documentation is on binutils web site (noscript/basic HTML) : https://sourceware.org/binutils/docs/ld/VERSION.html

Must include glibc internal symbols.

I would use the "readelf" command to audit the binaries for broad elf(glibc)/linux distro support (like stock unity has been). Namely DT_NEED entries, symbol/shared lib version requirement (at the end of readelf output), etc.

An additional note: in the case of a complex set of ELF64 binaries, don't forget that ELF DT_RPATH is deprecated in favor of ELF DT_RUNPATH (see man page of ld.so). To force DT_RPATH into DT_RUNPATH, you must use the follower binutils ld option: '--enable-new-dtags' (using the compiler driver, that would be '-Wl,--enable-new-dtags'. Carefull, you'll see that in ld.so man page, DT_RPATH and DT_RUNPATH do not behave the same way. You should use dynamic loading for your private shared libs using the $ORIGIN keyword anyway.

Ofc, dynamic loading (libdl/dlopen/dlsym/dlclose) is mandatory for system interface shared libs, and for core video games: libX11 set or xcb set of client X11 libs, libasound (wayland code is statically linked with its libxkbcommon for xkb keymap handling). Basically, The DT_NEED entries of your set of ELF64 binaries must reference only common glibc libs (and if you don't dynamically load them, your private ones with proper DT_RUNPATH).


feel free to open a MR :)


Would it not be more efficient to create the decoder in-process, then you could feed it the bitstream via a compute buffer, and the video would be rendered to a texture.


I assume it’s a GPL workaround.


Thank you very much.


Building a website to list all destinations and schools around the world, focused on depth freediving, with various data points relevant to that sport.

If you do any freediving or apnea training, interested to hear what you think of the platform.

https://freedivingbase.com/



Building pkgstore.io, a marketplace for commercial .NET NuGet packages.

https://www.pkgstore.io

NuGet.org doesn't distinguish between a hobby project and a professionally maintained library with real support. pkgstore is a curated directory and marketplace where publishers can sell NuGet packages directly, with full dotnet push/restore support, Stripe payments, and automated access control.

In open beta now, onboarding publishers. Would love feedback.


You are correct, I should have framed it this way. I've edited the post. Thanks.


they do but it's fairly limited.


post author here. Yes, basically all of what you said. I've edited the post.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: