Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#1 | Link |
結城有紀
Join Date: Dec 2003
Location: Oregon
Posts: 895
|
IT 1.2 (ported)
https://github.com/msg7086/VapourSynth-IT
Latest: v1.2 Ported from original IT filter. It did a very good job and is my favorite ivtc filter. So I did a copy-and-paste style partial porting. 8K width is supported thanks to a patch. Now support Linux. Clang versions appear to be faster. Last edited by MeteorRain; 15th October 2014 at 09:11. Reason: v1.2 |
![]() |
![]() |
![]() |
#2 | Link |
Registered User
Join Date: May 2008
Posts: 1,840
|
Interesting blast from the past, this used to be my favorite ivtc too but then I noticed in some videos there was issues with scene changes, tivtc and decomb handle these same videos fine. Could the thread-safe fix this? I don't have any samples to test anymore but it happened on a substantial amount of dvd's.
__________________
PC: FX-8320 GTS250 HTPC: G1610 GTX650 PotPlayer/MPC-BE LAVFilters MadVR-Bicubic75AR/Lanczos4AR/Lanczos4AR LumaSharpen -Strength0.9-Pattern3-Clamp0.1-OffsetBias2.0 |
![]() |
![]() |
![]() |
#4 | Link |
Professional Code Monkey
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,611
|
You should change all lines like this in the code:
Code:
(int)vsapi->propGetInt(in, "fps", 0, &err); => int64ToIntS(vsapi->propGetInt(in, "fps", 0, &err));
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet |
![]() |
![]() |
![]() |
#5 | Link | |
結城有紀
Join Date: Dec 2003
Location: Oregon
Posts: 895
|
Quote:
I tried to rewrite some inline asm into intrinsics, but it appears to be slower. Mixing SSE with MMX might be the cause. Maybe I'll look into that later. That's a large code base to me and I'm not that familiar with C/C++, and even ASM, and image processing, and etc.. |
|
![]() |
![]() |
![]() |
#6 | Link | |
Excessively jovial fellow
Join Date: Jun 2004
Location: rude
Posts: 1,100
|
Quote:
Avoid plain old C casts if possible, especially if they actually change the data (like in this case, an integer width reduction). In general in C++ if you really really do need to cast you should probably use static_cast<typename>(), reinterpret_cast<typename>() and friends instead. See http://stackoverflow.com/questions/1...nstead-of-intx and http://stackoverflow.com/questions/3...t-cast-be-used Last edited by TheFluff; 3rd October 2014 at 17:56. |
|
![]() |
![]() |
![]() |
#7 | Link |
Professional Code Monkey
Join Date: Jun 2003
Location: Kinnarps Chair
Posts: 2,611
|
The main problem is that all of these simply truncate the value. If someone passes 0x100000000 it will appear to be 0. Obviously no one really expects this behavior which is why int64ToIntS is provided to provide saturated values. (as in, return the closest value representable by an int instead of the usually 32 lowest bits)
__________________
VapourSynth - proving that scripting languages and video processing isn't dead yet |
![]() |
![]() |
![]() |
#8 | Link |
結城有紀
Join Date: Dec 2003
Location: Oregon
Posts: 895
|
Nice guide, thanks @TheFluff! I'm quite new to the plusplus world.
@Myrsloik Thanks for letting me know. I will try to improve the code. ===== And I have uploaded v0.3. Last edited by MeteorRain; 4th October 2014 at 03:21. |
![]() |
![]() |
![]() |
#10 | Link |
Guest
Posts: n/a
|
What version of the IT source code did you base your port off of? Just so I can have a reference.
If you want, I can try to help you fix up and clean up your port so it compiles outside of VC++. I will start by getting rid of all your macros and reimplementations of Avisynth interfaces to make your code look less awkward. Then before trying to recreate the assembly, the focus should be on just getting plain C code for everything then try to optimize with assembly intrinsics from there after doing some profiling. Last edited by macromizer; 4th October 2014 at 21:24. |
![]() |
![]() |
Tags |
ivtc, vapoursynth |
Thread Tools | Search this Thread |
Display Modes | |
|
|