From: Stephen Hutchinson <qyot27@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH] libavformat/vapoursynth: Update to API version 4, load library at runtime Date: Sat, 22 Jun 2024 14:23:36 -0400 Message-ID: <bb5abd67-1aa7-47b2-925f-e645f92bde8e@gmail.com> (raw) In-Reply-To: <7f6d9bd3-f668-4139-ab8f-f3f03bf2bf56@gmx.net> On 6/22/24 6:02 AM, Stefan Oltmanns via ffmpeg-devel wrote: > I don't know the extact reason, but VapourSynth is not just a library > like avisynth, but an application that uses Python, meaning a lot of > dependencies. If we want to be technical, then yes, VapourSynth is just a library, with bindings to integrate it into Python. Lua bindings used to exist in mpv, but were removed several years ago; I don't know if those still exist somewhere externally. Maybe someone's tried writing Ruby or JS bindings for it, crazier things have happened. Python is the thing that provides the ability to execute scripts, not VapourSynth/VSScript[.dll|.so|.dylib] itself. > Additionally VapourSynth can nowadays be installed using pip, so no > reason to package it for distros anymore. > > As distros probably won't package VapourSynth as it can be installed > using pip, they probably won't build ffmpeg with VapourSynth support, > because they don't have the headers on the build system. > Even when someone decides to build ffmpeg for themself with VapourSynth > support, it will fail unless they have manually build VapourSynth, > because pip won't install any header. > That was my motivation to include those headers. Is there a specific > rule when it is allowed to include headers for external libaries? > Distros don't really care about whether something is installable via pip before providing their own packages, and this was even acknowledged by upstream Python/pip with the recent move to the venv/--break-system-packages thing. What a distro decides to package or not package in conjunction with enabling support for it in FFmpeg relates directly to their native repository system. This would also apply to a project like libdovi; if it's going to be provided and enabled in a distro's FFmpeg package, they aren't going to take the stance of 'users will just install it through their Rust environment first' - the distro will have to provide a package for it for the distro's FFmpeg package to enable it. >>> I changed it, so that it loads the library at runtime when a VapourSynth >>> script should be opened, just like AviSynth does. >>> On Windows the DLL from VapourSynth is not installed in the system >>> directory, but the location is stored in the Registry. Therefore I added >>> some code to read that information from the registry. >>> >> >> That function is in the wrong place. >> > > > I thought that to, should it be in /compat as w32registry.h or something > like that? > > But what exactly should it contain? > > I could make a function that would be used like > get_w32_regsitry_str(HKEY_CURRENT_USER, L"SOFTWARE\\VapourSynth", > L"VSScriptDLL"); > That would return a utf8 string on success and NULL on failure > I would say either unify the logic inside of vs_load_library with the minimum of Windows-specific things still cordoned off behind an ifdef, or move the function (again, still behind an ifdef) to just above where vs_load_library is. It was mainly that putting it inside a big block of header #includes isn't the right place for that. Have you tested whether simply adding the directory VapourSynth.dll and VSScript.dll reside in to the %PATH% gets around the need to read locations from the registry? Without adding it to the %PATH%, you could use Windows' own DLL loading rules to test it (just plop ffmpeg.exe down in the same directory and run it when navigated into that directory). > But that would still contain 3 Windows-specific constants in the > function call. Also is it useful to write the literals as utf-8 just for > them to be converted to wchar again or should it just take WCHAR and > return utf8? > Or shoulds the entire function be located in > /compat/vapoursynth/w32_vsscript_dll.h as "get_w32_vsscript_dll" or > something similar? > I'm definitely not the person to ask about the text encoding stuff. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2024-06-22 18:23 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-06-22 1:37 Stefan Oltmanns via ffmpeg-devel 2024-06-22 6:27 ` Stephen Hutchinson 2024-06-22 10:02 ` Stefan Oltmanns via ffmpeg-devel 2024-06-22 18:23 ` Stephen Hutchinson [this message] 2024-06-22 19:22 ` Stefan Oltmanns via ffmpeg-devel 2024-06-25 9:10 ` Anton Khirnov 2024-06-25 9:17 ` Paul B Mahol
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bb5abd67-1aa7-47b2-925f-e645f92bde8e@gmail.com \ --to=qyot27@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git