View Full Version : New Logo Removal Plugin
manolito
12th September 2016, 02:01
Now I'm trying to use it with StaxRip x64 version and the dll does not work there as apparently it's not compatible with x64 needs.
I believe that Stax is a little too much obsessed with being at the frontier of technology. Insisting on 64-bit only means excluding a plethora of useful plugins which are only available in 32-bit versions. And the speed benefit of 64-bit is quite small IMO.
After many tests I decided for myself to revert back to the 32-bit version of StaxRip. I did not like version 1.2.2.0 all that much so I went all the way back to version 1.1.9.0, and I never looked back...
Cheers
manolito
TheFluff
12th September 2016, 03:53
I believe that Stax is a little too much obsessed with being at the frontier of technology. Insisting on 64-bit only means excluding a plethora of useful plugins which are only available in 32-bit versions. And the speed benefit of 64-bit is quite small IMO.
I'm genuinely curious what useful plugins are only available in 32-bit in this day and age. This one is the first I've seen anyone ask for in a while (disregarding rean and his general craziness, but he's a nutjob so he doesn't count).
This particular plugin seems to be fairly clean C with no inline assembly, compiler intrinsics or other weirdness so chances are you can just recompile it with the Avisynth+ C-interface header and it'll work. It's a single source file, shouldn't take you more than maybe ten minutes to give it a try, so what are y'all waiting for?
Yanak
12th September 2016, 09:38
I won't argue about the utility or futility of a full x64 program, StaxRip x64 in the last versions brings some options very useful for me, making my life way easier when it comes to encode videos, that's all :)
@TheFluff,
you give me some hope man , searched briefly on the net for converting x86 stuff to x64 but i don't understand fully the part about inline assembly and other potential weirdness you speak about, seems like a good sign tho.
The source code is in the AVSInpaint.c file right ? I checked it a bit his content and saw "#include "AviSynth_C.h"" , if this the thing you speak about when you say " just recompile it with the Avisynth+ C-interface header" ?
If so and if i understood correctly changing this part to use Avisynth+ x64 equivalent file and recompile the dll may work ?
I don't know yet how to recompile this or even what program to use to do this but might spend some time searching the web in the next days to try figure this out and do it, hopefully i will not screw up everything, or maybe a good soul having more knowledge about this will have pity of me and do it, if like you said it takes 10 minutes to do someone may be kind enough to try it :)
Thanks a lot.
StainlessS
12th September 2016, 16:28
Yanak, I see AMSS0815 on-site right NOW, perhaps you will be lucky.
AMSS0815
12th September 2016, 17:09
Hi Yanak,
thanks for your posting. I'm still watching this thread, and from time to time I'm wondering if someone (still) uses this thing...
Unfortunatelly I can only be of little help: I'm not running Windows anymore, and the only Windows I can access right now is a 32bit-XP-installation.
Here is what I know:
The code of my plugin is completely architecture-independent, so it should compile cleanly on 64bit or whereever.
"My" code is in AVSInpaint.c; in order to compile it into a dll, you need at minimum the files AviSynth_C.h and AviSynth.lib. The former is -- apparently -- also architecture-independent, but I have a very bad feeling about the latter. Quickly searching the web, I just found this little tutorial (http://avisynth.nl/index.php/Avisynth_Plugin_Development_in_C), which doesn't mention architecture at all. If you can find this AviSynth.lib somewhere, and it is advertised for 64bit systems, that would be very helpfull. But I'm not sure if this file is architecture-dependent at all.
If you have these files, you need the compiler. I used gcc from mingw32 (http://www.mingw.org/) when I compiled this plugin, but I guess something like the 64bit-version of gcc is necessary. I'm not sure if I can run this on 32bit Windows and still compile 64bit binaries. Skimming the mingw-w64 site (https://mingw-w64.org) I wasn't able to find anything that looks like a gcc which runs on 32bit and produces 64bit binaries. Maybe someone can help? Since your OS is 64bit maybe it's easier for you to compile this than it is for me.
As soon as you find a Windows-64bit-version of gcc, you can just invoke the commands in AVSInpaint.Makefile.gcc.txt manually, i.e. gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes -Wredundant-decls -O2 -fomit-frame-pointer -malign-double -s -march=x86-64 -c -o AVSInpaint.obj AVSInpaint.c
gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes -Wredundant-decls -O2 -fomit-frame-pointer -malign-double -s -march=x86-64 -shared -o AVSInpaint.dll AVSInpaint.obj AviSynth.lib Mind the "-march=x86-64" , I hope that is sufficient for 64bit binaries.
With this (non-)knowledge, I downloaded a file called i686-6.2.0-release-win32-dwarf-rt_v5-rev1.7z (https://sourceforge.net/projects/mingw-w64/files/) somewhere near the mingw64-project and recompiled the dll with the commands from above. Surprisingly there were no errors (but many warnings .. gcc grew quite strict within the past years). As I can't test that file I just attach it here for you to test. I'm doubting it will work. If it does: Celebrate, otherwise please try to find some 64bit-on-64bit-version of mingw, look for a 64bit-version of the lib-file, then follow the recipe outlined above. There is no real coding involved, the hardest part is probably searching for the requisites.
I'm running linux on x86-64. Maybe I can get some linux-version of mingw for my cpu, then I might be able to compile it myself, but this probably won't happen this week.
If someone around here has any hint on compiling C-plugins for 64bit-AviSynth, please let us know
Yanak
12th September 2016, 20:11
Thanks a lot for the answer, really happy to see this, the dll can't be downloaded for now as it seems to need some approval, not sure how it works on the forum and how long it will take but I'm really impatient to test it.
I am on a limited network for the moment and can't really browse efficiently the net to look into all the procedure you explained, but if the .dll doesn't work I'll try to search for the needed files as soon as possible, maybe someone else passing by will know already how to find those too.
Thank you very much for taking the time to make it, really appreciate it, hope it will work so i can continue to enjoy your great work .
Thanks a lot.
Yanak
13th September 2016, 01:19
Tested quickly and doesn't seems to work , i cannot get it to load in StaxRip, getting a error message
Cannot load file 'C:/Users/Yanak/Desktop/AVSInpaint.dll'. Platform returned code 193:
%1 is not a valid Win32 application.
Using Megui it still loads on my avs and does the job perfectly to remove the logo while under x86 avisynth, even combined with InpaintFunc.avs this new dll still works nicely under x86 and still do an awesome job on removing the logo .
Almost 2am here so i will search tomorrow for AviSynth_C.h and AviSynth.lib in x64, the first one might be available at avisynth+ (http://avs-plus.net/), Avisynth.lib for x64 might take a bit more time, first searches were not conclusive.
I'll also give a try at your instruction to compile the dll directly under x64 and see how it goes too, will have to go step by step as this is not really something i'm used to :scared:
Thanks again for having took the time to do it and help on this.
StainlessS
13th September 2016, 15:32
Not sure but I think I remember some kind of problem with an app (Yasm I think) where it would not work compiled with
later versions of a compiler (maybe gcc), where the platform ID had changed from upper to lowercase, ie Platform
should be (I think) 'win32' not Win32', or win64 not Win64. Hope AMSS0815 sees this.
EDIT: See here:- http://forum.doom9.org/showthread.php?p=1742975#post1742975
EDIT: In above link seems to apply to win32 Visual Studio build, but perhaps applies to win64 gcc too (maybe worth further examination).
Yanak
14th September 2016, 01:07
I tried to compile by myself with mingw-w64 , after some tries i could do some tests but no luck for me.
In mingw-w64 install options i can select i686 or x86_64 :
https://s14.postimg.org/m5koxbfjl/34565720160914013125cr.jpg
Tried the second one and doing the obj file works but getting the dll gives me this message :
E:\test>gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclarati
n-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes -Wredundant-decls -O2 -fomit-frame-pointer -ma
ign-double -s -march=x86-64 -shared -o AVSInpaint.dll AVSInpaint.obj AviSynth.lib
AVSInpaint.obj:AVSInpaint.c:(.text+0x6c): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0xdd): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xef): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x137): undefined reference to `__imp_avs_copy_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x149): undefined reference to `__imp_avs_add_function'
AVSInpaint.obj:AVSInpaint.c:(.text+0x885): undefined reference to `__imp_avs_new_c_filter'
AVSInpaint.obj:AVSInpaint.c:(.text+0x91c): undefined reference to `__imp_avs_set_to_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x934): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xa0c): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xba7): undefined reference to `__imp_avs_set_to_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xbd5): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x16a3): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x16c0): undefined reference to `__imp_avs_make_writable'
AVSInpaint.obj:AVSInpaint.c:(.text+0x1837): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x1aee): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x2a1a): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x399c): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x3c09): undefined reference to `__imp_avs_make_writable'
AVSInpaint.obj:AVSInpaint.c:(.text+0x3e59): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x4bf6): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x51bd): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x53b4): undefined reference to `__imp_avs_new_c_filter'
AVSInpaint.obj:AVSInpaint.c:(.text+0x557d): undefined reference to `__imp_avs_new_c_filter'
AVSInpaint.obj:AVSInpaint.c:(.text+0x55e7): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x55fe): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0x586a): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0x588e): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x5fc7): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x6017): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x6134): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0x6dca): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x6e55): undefined reference to `__imp_avs_copy_value'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7077): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0x711f): undefined reference to `__imp_avs_set_to_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7195): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x71d0): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x71e5): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x776a): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x77ca): undefined reference to `__imp_avs_make_writable'
AVSInpaint.obj:AVSInpaint.c:(.text+0x79b5): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x79cb): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x79e1): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7bfe): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7c14): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7e6d): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7e81): undefined reference to `__imp_avs_make_writable'
AVSInpaint.obj:AVSInpaint.c:(.text+0x7ed9): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x839e): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x83ff): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8442): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8492): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x84a0): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x85f1): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8695): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8762): undefined reference to `__imp_avs_new_c_filter'
AVSInpaint.obj:AVSInpaint.c:(.text+0x87b4): undefined reference to `__imp_avs_set_to_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x87e3): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8b60): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8b7e): undefined reference to `__imp_avs_set_cache_hints'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8b99): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8be9): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8bff): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8c0d): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8e22): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8e4c): undefined reference to `__imp_avs_set_cache_hints'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8e57): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8edf): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x8faa): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0x93f4): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x9597): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x9c02): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0x9f85): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0xa824): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaa6a): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaa8f): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaaec): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xab0d): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0xab3a): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xab4c): undefined reference to `__imp_avs_release_video_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0xabff): undefined reference to `__imp_avs_take_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xac75): undefined reference to `__imp_avs_get_video_info'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaf45): undefined reference to `__imp_avs_set_cache_hints'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaf6c): undefined reference to `__imp_avs_get_frame'
AVSInpaint.obj:AVSInpaint.c:(.text+0xaf85): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0xafe2): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0xafec): undefined reference to `avs_is_yuy'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb230): undefined reference to `__imp_avs_new_video_frame_a'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb2df): undefined reference to `__imp_avs_new_c_filter'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb359): undefined reference to `__imp_avs_set_to_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb383): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb3e8): undefined reference to `__imp_avs_release_clip'
AVSInpaint.obj:AVSInpaint.c:(.text+0xb428): undefined reference to `__imp_avs_get_frame'
collect2.exe: error: ld returned 1 exit status
E:\test>
Strangely enough when i tied the second command line given without the AviSynth.lib file at the end the message ended in being almost the same if not the exact same error message, i'll have to try this again tomorrow and compare both, using this command missing the AviSynth.lib at the end ( i tried without it, who knows :p ) :
gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes
-Wredundant-decls -O2 -fomit-frame-pointer -malign-double -s -march=x86-64 -shared -o AVSInpaint.dll AVSInpaint.obj
I removed the program and installed it again, selected the i686 setting and this time it worked and got the dll done, also gave a try to mingw in normal version , not the mingw-w64 one, and got the dll done there too, both working nicely under Megui and avisynth x86 but same error message on Staxrip x64 as before,
Will test and try more tomorrow but seems like mingw-w64 with x86_64 setting the file AviSynth.lib might be the problem, searched a while for x64 version of it and only thing i could find is this discussion :
http://forum.doom9.org/showthread.php?p=1389791#post1389791
Sadly i could not find the lib file in the link of the second post and got lost in JoshyD's explanation to be honest, all this is new to me.
Well, no luck for me but managed to compile my first dll and it's working in megui under x86, that's something already :p
StainlessS
14th September 2016, 05:46
Yanak, Avisynth standard installer installs Avisynth.lib in Extras folder when you tick the 'Select Extra Files' tick box.
I assume that AVS+ 64bit does the same (If that is what you are using).
JoshyD post from 2010 MT 64 bit, so unlikely to be of use for AVS+ 64 bit (I think, unless that is what you are using).
TheFluff
14th September 2016, 08:14
I assume that AVS+ 64bit does the same (If that is what you are using).
It doesn't, but I'm pretty sure you can generate an import .lib from avisynth.dll using some tools that come with Visual Studio. Don't think you need to compile Avisynth itself just for that.
some low effort googling gave this, make of it what you will: http://stackoverflow.com/questions/9946322/how-to-generate-an-import-library-lib-file-from-a-dll
Groucho2004
14th September 2016, 09:00
It doesn't, but I'm pretty sure you can generate an import .lib from avisynth.dll using some tools that come with Visual Studio. Don't think you need to compile Avisynth itself just for that.
some low effort googling gave this, make of it what you will: http://stackoverflow.com/questions/9946322/how-to-generate-an-import-library-lib-file-from-a-dll
I've already tried this. It doesn't work, see kemuri-_9's comment about function decoration here (http://forum.doom9.org/showthread.php?p=1461594#post1461594). His suggestion under "B" may be worth trying.
I also tried building JoshyD's 64 bit Avisynth just to get the 64 bit avisynth.lib but porting that to VC10 is more difficult than one would expect. I might give it another go later.
TheFluff
14th September 2016, 11:06
But this plugin is using the C API, not the C++ one. I don't think name mangling should be an issue in that case. (may be completely wrong here though)
I don't really understand why you're trying to build JoshyD's Avisynth instead of Avs+ either. What am I missing here?
Groucho2004
14th September 2016, 11:21
I don't really understand why you're trying to build JoshyD's Avisynth instead of Avs+ either. What am I missing here?I would have to download several GB of stuff to build it (VC2015, SDKs, ...).
TheFluff
14th September 2016, 11:31
Oh. My world is post-bandwidth-scarcity (well, to a point, above 50 GB or so it starts getting a bit tedious) so I didn't even consider that as a problem, guess I need to check my privilege huh
feisty2
14th September 2016, 12:27
2015 version is a MUST if you're using visual studio
Note that the latest c++ standard is c++14, and gonna be c++17 soon
Groucho2004
14th September 2016, 12:59
2015 version is a MUST if you're using visual studio
For a pro developer, probably. As a hobby coder, I can use whatever version and standard I want and need.
Groucho2004
14th September 2016, 13:00
Oh. My world is post-bandwidth-scarcity (well, to a point, above 50 GB or so it starts getting a bit tedious) so I didn't even consider that as a problem, guess I need to check my privilege huh
It's not that I can't download it, I don't want to.
feisty2
14th September 2016, 14:00
For a pro developer, probably. As a hobby coder, I can use whatever version and standard I want and need.
True, but don't you wanna try out stuff like type deduction and lambda and whatever? New things are cool
Yanak
17th September 2016, 11:00
Spent last days trying to figure this out and search for a .lib file compatible with x64 without luck.
I can confirm that the error messages i get here (http://forum.doom9.org/showpost.php?p=1780617&postcount=59) is exactly the same as when using the command line without the lib file using mingw-w64 to compile.
using those 2 commands, one having AviSynth.lib at the end and the other not, both end up in the same error message output.
gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes
-Wredundant-decls -O2 -fomit-frame-pointer -malign-double -s -march=x86-64 -shared -o AVSInpaint.dll AVSInpaint.obj AviSynth.lib
gcc -fdiagnostics-show-location=once -funsigned-char -mthreads -Wextra -pedantic -Wall -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wstrict-prototypes
-Wredundant-decls -O2 -fomit-frame-pointer -malign-double -s -march=x86-64 -shared -o AVSInpaint.dll AVSInpaint.obj
Well nothing more i can do now, hopefully Groucho2004 or somebody else can end up with something.
Thanks
real.finder
10th November 2016, 12:18
don't know if this what you looking for, I have it in mpp mod source http://forum.doom9.org/showpost.php?p=1746479&postcount=235
Yanak
11th November 2016, 00:15
Hello,
I started to look a bit into this and it looks promising to make it work as i need. :)
I'm waiting for the attachment approval to see what it is and will try this tomorrow or this weekend after reading a bit more about all this.
Thanks a lo for the info if it works you will save the day man :)
real.finder
11th November 2016, 01:15
Hello,
I started to look a bit into this and it looks promising to make it work as i need. :)
I'm waiting for the attachment approval to see what it is and will try this tomorrow or this weekend after reading a bit more about all this.
Thanks a lo for the info if it works you will save the day man :)
you can see it from http://www.mediafire.com/download/3szchn46e0ul6cy/MP_Pipeline-0.18.1+src.rar
Yanak
11th November 2016, 14:50
Hi,
I grabbed the one already compiled from your previous link " MP_Pipeline+0.18.1.rar"
After a few trial and errors i got this working now,
That's working fine and doing the job nicely, and on the top of this it also allows me to bypass a problem i had using debug frameserver outputting only a x86 codec that refused to work with x64 programs, one stone two birds :D
Thanks a lot for the help man, your really saved the day, now i will be able to use again my favorite logo remover tools, a big thanks to you, this is an awesome day :)
Gser
24th June 2017, 18:50
Hi,
I grabbed the one already compiled from your previous link " MP_Pipeline+0.18.1.rar"
After a few trial and errors i got this working now,
That's working fine and doing the job nicely, and on the top of this it also allows me to bypass a problem i had using debug frameserver outputting only a x86 codec that refused to work with x64 programs, one stone two birds :D
Thanks a lot for the help man, your really saved the day, now i will be able to use again my favorite logo remover tools, a big thanks to you, this is an awesome day :)
Would you care to share it with us? :thanks:
Yanak
3rd July 2017, 10:34
Would you care to share it with us? :thanks:
Hi, and sorry for the late reply, i posted here how to add it into Staxrip that needs x64 full chain to work :
https://github.com/stax76/staxrip/issues/170#issuecomment-302266265
I don't have much time for now to explain more in details than there but if you have questions let me know, i'll try to answer them.
Gser
13th December 2017, 14:39
Hi, and sorry for the late reply, i posted here how to add it into Staxrip that needs x64 full chain to work :
https://github.com/stax76/staxrip/issues/170#issuecomment-302266265
I don't have much time for now to explain more in details than there but if you have questions let me know, i'll try to answer them.
Thanks. I was even surprised it even worked on my first try.
On a side note about this filter I highly recommend everyone to try higher InpaintPre and Postblur especially when doing only inpainting. The default settings are highly lacking. At the moment I'm using InpaintPreBlur=3, InpaintPostBlur=8 and the result is on another level. I didn't not find any higher settings to be of any use.
Also P=3 also caused a strip right in the middle of the logo, but using P=2 made a much more uniform blend that wasn't stretched to the middle.
I also changed the the instances of colormatrix settings from 607 to 709 since that is what my material is.
I suppose the only thing left to experiment is to try to use FFT3DGPU instead of the cpu version which is one of the post processing filters.
PS. This filter also benefits highly from multi-threading after you have done the analyses. It seems it can't analyze in multiple threads
Yanak
13th December 2017, 17:01
Thanks for the feedback,
Depending the logo's sizes and types the pre and post blur parameters can really be helpful indeed, again depends of the logos but it can really improve the results, sometimes reducing values gives better results for me, really depends on logo and video material.
Same for the PPmode setting, but if i recall correctly you need to have mod16 videos to apply the mode 2 and 3, i'm not sure and will have to try again but pretty sure that trying PPmode 3 on some videos brings an error message about this.
Sharpness settings is another thing that can be played with to improve results.
When you say you changed the colormatrix to 709, you mean you edited the "InpaintFunc.avs" script file and changed something there or simply added a conversion line on your general script ? If you edited it inside "InpaintFunc.avs" file i would be interested to know where you done it please, something i did not thought about before.
As for using FFT3DGPU this is also an interesting idea, If you do push testing on this please share your results and the changes made, might bring even better results :)
Analyze can take some time on long (and high resolution) videos using a speed like 10 to 20 but once done it's nice, at speed 5 it's quite fast usually, mostly using speed 20 myself but never was a problem tho.
This plugin is old but for now i did not found anything doing a better job at removing logo's, strangely it is not much used :p
Waiting to hear from you and your experiments again,
Thank you.
StainlessS
14th December 2017, 01:18
True, but don't you wanna try out stuff like type deduction and lambda and whatever? New things are cool
Sorry, long time later but I really gorra respond like I wanted to at the time.
Trying New Stuff is always cool, but breaking stuff just so as to enjoy your New Stuff fix is a bit of an amateur (amongst amateurs) type stance.
Youth excuses a lot of things, but it aint cool to break things just to try something new, that is just daft.
Gser
14th December 2017, 12:59
Thanks for the feedback,
Depending the logo's sizes and types the pre and post blur parameters can really be helpful indeed, again depends of the logos but it can really improve the results, sometimes reducing values gives better results for me, really depends on logo and video material.
Same for the PPmode setting, but if i recall correctly you need to have mod16 videos to apply the mode 2 and 3, i'm not sure and will have to try again but pretty sure that trying PPmode 3 on some videos brings an error message about this.
Sharpness settings is another thing that can be played with to improve results.
When you say you changed the colormatrix to 709, you mean you edited the "InpaintFunc.avs" script file and changed something there or simply added a conversion line on your general script ? If you edited it inside "InpaintFunc.avs" file i would be interested to know where you done it please, something i did not thought about before.
As for using FFT3DGPU this is also an interesting idea, If you do push testing on this please share your results and the changes made, might bring even better results :)
Analyze can take some time on long (and high resolution) videos using a speed like 10 to 20 but once done it's nice, at speed 5 it's quite fast usually, mostly using speed 20 myself but never was a problem tho.
This plugin is old but for now i did not found anything doing a better job at removing logo's, strangely it is not much used :p
Waiting to hear from you and your experiments again,
Thank you.
Ah when doing YUV-RGB conversion you should specify which colormatrix to use. Otherwise the colors of the edited parts will slightly differ from the source. Actually I was using rm_logo that uses AVSInpaint. It also uses FFT3Dfilter in pp=2. Seems I got too excited and posted about it here.
Yanak
14th December 2017, 14:33
Thanks,
I do the conversion with matrix in the general script before the logo remover part, was thinking you was directly modifying and editing this in the "InpaintFunc.avs" file for easier use since you always use the same color matrix scheme, i should probably look into all the "convertto" occurrences in the file and edit them to add my most used matrix there for more accurate results.
Or maybe find a way to pass this as a variable/setting/function in the overall scrip itself will make it more versatile i don't know.
Like i said i get good results with this one, gave up on all others after many testings done long time ago, if something could improve a bit the results like FFT3Dfilter I'll give it a try for sure, not god enough myself to start messing with the general script and modify stuff there tho :)
Thank you.
FranceBB
10th January 2018, 02:13
I tried to use this delogo filter for the first time, but it keeps saying that my mask is empty, even thought it's not.
I simply kept seeking my file 'till I found a scene change with a black background and just the logo displayed.
I then saved a lossless png of that frame, but InpaintFunc wasn't happy with that, so I converted it to bmp and used it as mask.
When I tried to load Avisynth, it says "Analyze: mask is empty".
loadCplugin("C:\Programmi\AviSynth\plugins\AVSInpaint.dll")
FFMpegSource2("Kingdomep1.ts", atrack=-1)
tfm(mode=1,pp=5,slow=2,micmatching=2,clip2=tdeint(mode=2,type=3))
tdecimate()
DeBilinearResizeMT(1280, 720)
InpaintFunc(mask="D:\[A-Destiny] Kingdom (Season 1 - Ep 01-38) (1280x720 Hi10p AAC)\nhk.bmp", loc="1162,24,-74,-650", ar=1.0, mode="both")
Full size frame that I'm using: https://i.imgur.com/FhY3NBT.png
Cropped logo, for reference only:
https://i.imgur.com/DKYJk7C.png
Yanak
10th January 2018, 11:14
Hello,
Your mask needs to be pure white and black colors only, you need to paint the logo with pure white color and the rest needs to be pure black.
The frame linked and the cropped logo picture both have 330 colors in them.
Usually i open the frame with the logo in a picture editor, create a transparent layer, draw and cover in pure white on the top of the logo displayed and once the logo is painted in white i just fill the rest of the transparent layer with pure black color and save as picture as .bmp .
Quickly done it here on your frame ( in png for the example ):
https://s14.postimg.org/ifl246bc1/184284_Mask2.png
Depending the logo and how it renders across all scenes/frames you can make the mask more or less precise, usually they tend to blur out around depending the background so it's better to just cover up the area and not bother much with drawing very precisely the contours, to get something more like this for the mask:
https://s14.postimg.org/fy9awwz5d/646530_Mask.png
Depends of the quality of your footage and the logo itself across all scenes/frames.
PS : the coords in your command are maybe a bit tight for the things i painted, maybe better to try something like 1160,22,-74,-650
FranceBB
11th January 2018, 04:49
Oh, I see, got it.
Thank you very much indeed, Yanak. :)
Yanak
12th January 2018, 15:19
You're welcome,
after a bit of experimentations on settings depending the logo and videos to treat the results can be really nice with this tool, have fun :)
VoodooFX
1st September 2019, 11:13
New bugfixed AvsInpaint v1.2 (x86/x64) by printerf: https://github.com/pinterf/AviSynthPlus
New InpaintDelogo script for it: https://forum.doom9.org/showthread.php?p=1883832
pinterf
26th October 2021, 07:51
New AvsInpaint v1.3 (https://github.com/pinterf/AvsInpaint/releases/tag/v1.3)
v1.3 (20211025)
- fix: InpaintDelogo hang at large frame sizes
- Add YV16, YV24, Y8 support
VoodooFX
11th November 2021, 10:13
New AvsInpaint v1.3 (https://github.com/pinterf/AvsInpaint/releases/tag/v1.3)
v1.3 (20211025)
- fix: InpaintDelogo hang at large frame sizes
- Add YV16, YV24, Y8 support
Thanks again pinterf, now I noticed this, actual func in AvsInpaint is called InpaintLogo, so bug was there, not in the script plugin called InpaintDelogo. I should have named it SwissDelogo, that's a first name variant which I considered. :D
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.