View Full Version : PFR - Progressive Frame Restorer
I've finally ported my Progressive Framer Restorer to Avisynth.
It's useful (well I use it anyway :) ) for trying to restore film originated material thats had special effects added, converted to 30 fps NTSC, sent across the water, converted to PAL 25fps, broadcast and then captured.
Revised V1.0a (corrects silly NPThresh default value:o ) available here (http://www.geocities.com/siwalters_uk/pfravs.html)
regards
Simon
V1.1a available here (http://www.geocities.com/siwalters_uk/pfravs.html)
Its now been fully converted to properly use the Avisynth enviroment.
regards
Simon
^^-+I4004+-^^
12th April 2003, 04:51
is this an exampe of that concept of yours to
restore progr. if possible (or better,to put fields
where and when they belong),and to make video
TFF for tv-out (matrox..hehe) if impossible?
hmmm,wouldn't work for me,as tv-tool
didn't make my bt869 to output interlaced
stuff as it should
(i get random field order problems_jerks back forth
from time to time....no,it's not the source...)
i think 2%(or less) people use tv-out to display
interlaced,but your concept is good in teh way
it tries to preserve both progr. and interlaced...
(you didn't put some deinterlacer behind it,right?)
i think 2%(or less) people use tv-out to display
interlaced,but your concept is good in the way
it tries to preserve both progr. and interlaced
You're probably right but I use it nowadays to make SVCDs and it would work equally well for producing DVDs as well.
It might actually give acceptable results for those watching (not single stepping) a programme on a progressive display using Xvid/DivX but YMMV :)
(you didn't put some deinterlacer behind it,right?)
Sort of - no deinterlacing done except when changing from one processing mode to the other one.
regards
Simon
sapient
12th April 2003, 19:58
Hi,
Do i have to use "Convert to YUY2" before using this filter? Or will it do it itself?
Yes -I'm afraid so if your source isn't YUY2. :(
Are you looking for it to handle YV12 or RGB?
regards
Simon
sapient
13th April 2003, 21:44
YV12. Standard DVD. It seems it might do a good job on all those PAL Star Trek and X-Files DVDs
I'll get on with it then :)
regards
Simon
V1.2 available here (http://www.geocities.com/siwalters_uk/pfravs.html)
Now works with YV12 as well as YUY2 colourspace
I consider the YV12 code as alpha at the moment as I simply keep the U and V information from the current frame regardless of whether the filter decides to use the Y info from the bottom field of the current or previous frame.
This might be good/right or it might be bad/wrong - time will tell :)
Any comments/bug reports welcomed.
regards
Simon
neuron2
25th April 2003, 01:20
Originally posted by siwalters
This might be good/right or it might be bad/wrong - time will tell :)
It's bad and wrong. :devil:
Why would you do that? May I point you to Telecide.cpp to see how to do it good and right? :)
Why would you do that?
Because it was the easiest solution :o and I wanted to actually get a YV12 version out to see how it performs with people using it on proper YV12 sources (not just me testing it with a ConvertToYV12 before it.)
AFAICT there are a number of issues such as was the source treated as interlaced or progressive when it was MPEGed and therefore does the 1st U/V plane line contain info about Y plane lines 1 or 2 or 1 and 3 etc :confused:
So my brain was hurting and it looked OK on my setup so I decided to publish and be dammed (which you've so kindly done ;)
regards
Simon
neuron2
25th April 2003, 05:40
You'll be mixing chroma from one picture with the luma of a different picture in some cases, won't you?
It seems to me that it doesn't matter which chroma sampling scheme was used. Putting matching fields back together fixes up the frame either way.
Interestingly, examination of the MPEG syntax for DVD VOB rips shows almost invariably that they are encoded with chroma_420_type set to 0, which means interlaced sampling. This is true even for 3:2 material. I don't have any PAL DVDs to look at. It makes sense because DVD players did interlaced upsampling (prior to more intelligent upsampling approaches based on the flags).
I agree that YV12 can get very confusing. I mean just think what happens when you SeparateFields() on a YV12 progressive sampled clip. The chroma assignments get mangled. But if you Weave() things get OK again. I think that may be the key to your dilemma.
OK, where did I go wrong? :eek:
V1.3 available here (http://www.geocities.com/siwalters_uk/pfravs.html)
Now swaps the UV data from bottom field as well as Y (as per Obiwan Graft's request/suggestion/demand ;) -I'm not going to own up to design errors next time :p )
I also changed/corrected the logo exclusion region co-ords to make them refer to pixel positions and not bytes along a line :o
If anyone (apart from me) actually uses the filter - please feel free to send me any comments here, PM or email me direct.
regards
Simon
sapient
4th August 2003, 00:47
I finally found some time to try it out properly. It seems to me that pfr() does not simply rearrange fields to recover progressive frames.
I tried it with a short test sequence, taken from a pal clip, transformed from a mixed film&video NTSC source in the usual way that produces blended fields.
Any obviously blended fields seem to have magically disappeared...
What does pfr() do exactly anyway?
sapient
PFR (like other De-combers) trys to restore original progressive material thats ended up being split over 2 frames.
It decides whether to pass a frame through untouched or whether the top field of the current frame should be matched instead with the bottom field of the previous frame.
The filter works on TFF material.
BUT on a transition from from processing state to the other, it does a simple interpolation of the bottom field from the top field so that any errors in making descisions are hopefully masked.
These interpolated frames only last for a few frames and are less visually disturbing than getting fields in the wrong temporal order when watching the output on a TV via an SVCD or DVD encoded disc.
So if your blended fields are bottom ones - then the blends will dissapear occasionally.
I recommend trying the filter with the diagnostic settings enabled to see what is happening.
I'd recommend PFR(ShowShift=16) and a quick read of the filters web page on what the colours all mean.
Let me know if any of this is confusing - its a very simple filter really.
Then - name the polish required :) (inside joke from another place)
regards
Simon
sapient
4th August 2003, 13:31
The problem is that this "interpolation" effectively cuts vertical resolution to half. And in bad PAL material from mixed NTSC, pfr keeps switching form one mode to the other, resulting in LOTS of... orange (i.e. interpolation).
So I would be looking for a polish color that would tone down all that orange :p
Also some damn post deinterlacing for the rest of us who like to watch on their monitors would be welcome. :angry:
You might have noticed my frustration in the matter in another thread.
sapient
Just so you know - I'm more into DS9 and Voyager which don't have anywhere near as much mixed 30fps video in them but change field order every other scene change. :(
But back to your problem, the interpolation isn't complusory :p
Try using NPPIF=0 to switch off interpolation when my filter thinks the video is progresssive. This is completely non-destructive and maybe should be the default.
And then try using PNPIF=0 if you want to completely switch off any interpolation.
Setting PNPIF to 0 has the most adverse effect if my filter picks the wrong pair of fields and you are watching on an TV. You end up with the wrong field order being output which is very very bad :(
I'm pretty certain that Telecide is the filter of choice to use if you are watching on a progressive display.
I'm thinking of implementing Telecide type hints so that KernelDeint can be used as a post processor but I've not come up with a good strategy on when to drop a hint :confused:
Anyway - try the 0 interpolation settings or maybe try using 1 instead of 0 and see what you think.
regards
Simon
sapient
4th August 2003, 19:04
He waves his wand and ...ta-da... the blended fields re-appear... :o
Thanks for the hint.
As you SHOULD have read in another post of mine int that "other place" telecide is not an option for these clips, it always gets the field order horribly wrong.
As for star trek, I am actually testing this with something different for the momment (the making of animatrix). The point is though that the problems with both this one and TNG DVDs are not so much in the video part as in the film part! Since there is so much video, the "brilliant" guys at paramount used the famous blending technique of reducing the framerate throughout the movie/episode, WITHOUT first aplying some IVTC on the film parts! :eek:
The results as you can imagine or probably see for yourself are horrible, where they could have been almost perfect.:(
The same goes for most making-of featurettes, like the one I am using.
Didée
5th August 2003, 10:37
...
And the best part is, those guys expect us to pay (a lot of) money for that technical crap!!
Actually, if you live in PAL country, and want to have a near-clean, localized version of any Star Trek stuff, you have to
- get the NTSC version
- get your very localized PAL version
- build everything together by your own hands!
I fear my English skills leave me here, to describe my disappointment, frustration and anger about this topic.
Grrr!
- Didée
Si
13th August 2003, 02:32
PFR 1.4 with postprocessing is now available here (http://www.geocities.com/siwalters_uk/pfravs.html) using neuron2's inter-filter hinting system.
I've added a parameter called EnablePP (true/false - default false).
This enables you to use KernelDeint instead of the internal field interpolation.
regards
Simon
Si
27th August 2003, 22:41
PFR() V1.5 avaiable here (http://www.geocities.com/siwalters_uk/pfravs.html)
I've replaced the interpolation code with my interpretation of the kernel deinterlacing algorithim (AFAICT its give exactly the same results as using Donald's KernelDeint132(order=1,threshold=0) i.e - the full treatment.
This has two advantages
1. I can exclude a logo region within my own code. :-)
2. You can use the real KernelDeint (with default threshold settings or even higher) as a true postprocessor to remove any slight residual combing (i.e in moving mouth sequences)
e.g
PFR()
KernelDeint(order=1)
What happens now is that the internal deinterlacer is used in transition frames instead of the original simple interpolation method. If you set EnablePP=true, then my filter will hint to KernelDeint when its already deinterlaced the frames and KernelDeint will ignore those frames.
This is the opposite of V1.4 when my filter told KernelDeint when to come in - now it tells it when to step out of the way
E.g. - given this source field sequence where lower case==source top fields, upper case==bottom fields
a b c d e f g h i j k l m n o p q r s t u v w
A B C E F G H I J K L M N O P Q R S T U V W X
then after PFR() you'll get
a b c d e f g h i j k l m n o p q r s t u v w
A B C d' e' f' g' h' i' j' k' l' m' n' o' p' q' r' S T U V W
(where a ' indicates full internal deinterlacing.)
If you then use KernelDeInt() after this then you'll get
a b c d e f g h i j k l m n o p q r s t u v w
A% B% C% d' e' f' g' h' i' j' k' l' m' n' o' p' q' r' S% T% U% V% W%
(with the % indicating the lighter touch of Don's filter)
regards
Simon
PS I really , really hope there no tipos in the above
BlueCup
29th August 2003, 06:28
Testing the filter out in VDub seems to crash VDub if you move too fast. Has anyone else encountered this error?
Originally posted by siwalters
PS I really , really hope there no tipos in the above
No tipos, but one typo :D
Si
31st August 2003, 21:16
Whats your exact script (and VirtualDub version) please?
regards
Simon
PS
BlueCup
1st September 2003, 21:04
LoadPlugin("C:\Program Files\AviSynth 2.5\yea\MPEG2Dec3.dll")
LoadPlugin("C:\Program Files\AviSynth 2.5\yea\PFR.dll")
mpeg2source("01.d2v")
PFR()
ResampleAudio(44100)
VirtualDub crash report -- build 16297 (release)
--------------------------------------
Disassembly:
77f83a60: ff894d147409 dec dword ptr [ecx+974144d]
77f83a66: 83f904 cmp ecx, 04
77f83a69: 7604 jbe 77f83a6f
77f83a6b: 836d1404 sub dword ptr [ebp+14], 04
77f83a6f: 68eefeeefe push feeefeee
77f83a74: ff7514 push dword ptr [ebp+14]
77f83a77: 8d4610 lea eax, [esi+10]
77f83a7a: 50 push eax
77f83a7b: e8a0d50200 call 77fb1020
77f83a80: 3b4514 cmp eax, [ebp+14]
77f83a83: 89450c mov [ebp+0c], eax
77f83a86: 7439 jz 77f83ac1
77f83a88: 64a118000000 mov eax, fs:[00000018]
77f83a8e: 8b4030 mov eax, [eax+30]
77f83a91: 8b400c mov eax, [eax+0c]
77f83a94: 8b400c mov eax, [eax+0c]
77f83a97: 83c02c add eax, 2c
77f83a9a: 50 push eax
77f83a9b: 686637f877 push 77f83766
77f83aa0: e88622ffff call 77f75d2b
77f83aa5: 8b450c mov eax, [ebp+0c]
77f83aa8: 8d443010 lea eax, [eax+esi+10]
77f83aac: 50 push eax
77f83aad: 56 push esi
77f83aae: 687237f877 push 77f83772
77f83ab3: e87322ffff call 77f75d2b
77f83ab8: 83c414 add esp, 14
77f83abb: 56 push esi
77f83abc: e879900100 call 77f9cb3a
77f83ac1: 0fb706 movzx eax, word ptr [esi]
77f83ac4: 294328 sub [ebx+28], eax
77f83ac7: 8a4705 mov al, [edi+05]
77f83aca: 2410 and al, 10
77f83acc: a810 test al, 10
77f83ace: 884605 mov [esi+05], al
77f83ad1: 740b jz 77f83ade
77f83ad3: 0fb64604 movzx eax, byte ptr [esi+04]
77f83ad7: 8b448358 mov eax, [ebx+eax*4+58]
77f83adb: 897038 mov [eax+38], esi
77f83ade: 57 push edi
77f83adf: 53 push ebx
77f83ae0: e894f4ffff call 77f82f79
77f83ae5: 8b4708 mov eax, [edi+08]
77f83ae8: 8b4f0c mov ecx, [edi+0c]
77f83aeb: 3bc1 cmp eax, ecx
77f83aed: 8901 mov [ecx], eax
77f83aef: 894804 mov [eax+04], ecx <-- FAULT
77f83af2: 7521 jnz 77f83b15
77f83af4: 668b07 mov ax, [edi]
77f83af7: 663d8000 cmp ax, 0080
77f83afb: 7318 jnc 77f83b15
77f83afd: 0fb7c8 movzx ecx, al
77f83b00: 8bc1 mov eax, ecx
77f83b02: 83e107 and ecx, 07
77f83b05: b201 mov dl, 01
77f83b07: c1e803 shr eax, 03
77f83b0a: d2e2 shl dl, cl
77f83b0c: 8d841858010000 lea eax, [eax+ebx+158]
77f83b13: 3010 xor [eax], dl
77f83b15: 8a4705 mov al, [edi+05]
77f83b18: a804 test al, 04
77f83b1a: 746c jz 77f83b88
77f83b1c: a802 test al, 02
77f83b1e: 0fb70f movzx ecx, word ptr [edi]
77f83b21: 8d0ccdf0ffffff lea ecx, [ecx*8+fffffff0]
77f83b28: 894d14 mov [ebp+14], ecx
77f83b2b: 7409 jz 77f83b36
77f83b2d: 83f904 cmp ecx, 04
77f83b30: 7604 jbe 77f83b36
77f83b32: 836d1404 sub dword ptr [ebp+14], 04
77f83b36: 68eefeeefe push feeefeee
77f83b3b: ff7514 push dword ptr [ebp+14]
77f83b3e: 8d4710 lea eax, [edi+10]
77f83b41: 50 push eax
77f83b42: e8d9d40200 call 77fb1020
77f83b47: 3b4514 cmp eax, [ebp+14]
77f83b4a: 89450c mov [ebp+0c], eax
77f83b4d: 7439 jz 77f83b88
77f83b4f: 64a118000000 mov eax, fs:[00000018]
77f83b55: 8b4030 mov eax, [eax+30]
77f83b58: 8b400c mov eax, [eax+0c]
77f83b5b: 8b400c mov eax, [eax+0c]
77f83b5e: 83 db 83
77f83b5f: c0 db c0
Windows 5.1 (Windows XP build 2600) [Service Pack 1]
EAX = 0356d950
EBX = 009e0000
ECX = 0366b950
EDX = 035ec948
EBP = 0012fc00
DS:ESI = 0023:0356e000
ES:EDI = 0023:035ec948
SS:ESP = 0023:0012fbf4
CS:EIP = 001b:77f83aef
FS = 003b
GS = 0000
EFLAGS = 00010287
FPUCW = ffff027f
FPUTW = ffffffff
MM0 = ade0000000000000
MM1 = 81a0000000000000
MM2 = c900000000000000
MM3 = d0e6666666666800
MM4 = cd0cccccccccd000
MM5 = 8000000000000000
MM6 = 8000000000000000
MM7 = 8000000000000000
Crash reason: Access Violation
Crash context:
An out-of-bounds memory access (access violation) occurred in module 'ntdll'.
Thread traces:
Thread 00000678 (Main thread)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Main.cpp(519)
C:\p4root\dev\VirtualDub\source\Init.cpp(375)
C:\p4root\dev\VirtualDub\source\FilterSystem.cpp(560)
C:\p4root\dev\VirtualDub\source\Init.cpp(381)
C:\p4root\dev\VirtualDub\source\Init.cpp(387)
C:\p4root\dev\VirtualDub\source\Init.cpp(391)
Thread call stack:77f83aef: ntdll!RtlSizeHeap [77f50000+33316+7d9]
77f58cca: ntdll!RtlFreeHeap [77f50000+8a3e+28c]
77f59037: ntdll!RtlFreeHeap [77f50000+8a3e+5f9]
77c2ab2e: msvcrt!free [77c10000+1aa6b+c3]
77c2ab33: msvcrt!free [77c10000+1aa6b+c8]
77c2ab2e: msvcrt!free [77c10000+1aa6b+c3]
77c2ab33: msvcrt!free [77c10000+1aa6b+c8]
10079ff1: AviSynth!DllCanUnloadNow [10000000+e100+6bef1]
10079ff1: AviSynth!DllCanUnloadNow [10000000+e100+6bef1]
1000a05b: AviSynth!0000a05b
77c2ab33: msvcrt!free [77c10000+1aa6b+c8]
10009fc8: AviSynth!00009fc8
1000e6c3: AviSynth!DllCanUnloadNow [10000000+e100+5c3]
1000e4aa: AviSynth!DllCanUnloadNow [10000000+e100+3aa]
73b552d5: AVIFIL32!AVIFileRelease [73b50000+52cb+a]
004121b0: AVIReadHandler::_destruct()
00412283: AVIReadHandler::Release()
00475a83: InputFileAVI::~InputFileAVI()
00477049: InputFileAVI::(special)()
004619e3: CloseAVI()
004750fa: Deinit()
0047ac51: WinMain@16()
70a71a29: SHLWAPI!StrCpyW [70a70000+19cb+5e]
70a71a29: SHLWAPI!StrCpyW [70a70000+19cb+5e]
004b5f1b: _msize()
77f59baa: ntdll!RtlAcquirePebLock [77f50000+9b82+28]
77f59bb3: ntdll!RtlAcquirePebLock [77f50000+9b82+31]
70a71a29: SHLWAPI!StrCpyW [70a70000+19cb+5e]
77f59bf9: ntdll!RtlReleasePebLock [77f50000+9bea+f]
77e61a57: kernel32!GetStartupInfoA [77e60000+177e+2d9]
004b001a: WinMainCRTStartup()
70a71a29: SHLWAPI!StrCpyW [70a70000+19cb+5e]
77e814c7: kernel32!GetCurrentDirectoryW [77e60000+21483+44]
70a71a29: SHLWAPI!StrCpyW [70a70000+19cb+5e]
-- End of report
stickboy
1st September 2003, 21:33
Originally posted by siwalters
then after PFR() you'll geta b c d e f g h i j k l m n o p q r s t u v w
A B C d' e' f' g' h' i' j' k' l' m' n' o' p' q' r' S T U V W (where a ' indicates full internal deinterlacing.)Hmmm... for some reason, I had always assumed PFR looked at the previous and next fields to determine the best match; that is, I expected:
a b c d e f g h i j k l m n o p q r s t u v w X'
A B C d' E F G H I J K L M N O P Q R S T U V W X So are E, F, ..., X totally discarded?
Si
1st September 2003, 23:42
@stickboy
I just use current frame and previous frame info (I think so anyway:o )
The reason all the frames are discarded (I prefer the term - modified but your right really :p ) is that PFR defaults to using a 15 frame transistion period going from N to P processing mode.
This is in case the material isn't field shifted progressive but turns out to be true video. If its true video, it'll probably flop back to N mode (no processing).
The main diff between my field order corrector and others (notably Telecide) is that maintenance of field order is paramount - a bit of deinterlacing for a few frames is very much preferred as its intended for SVCD/CVD playback on standalone DVD player connected to interlaced TV.
DVD's can afford to be encoded 2 field interlaced but SVCD/CVDs need all the bits they can to just encode a single frame
:(
Telecide is my recommended filter for watching stuff on PC's.
regards
Simon
Si
2nd September 2003, 01:02
LoadPlugin("C:\av\avisynth\oldplugins\MPEG2Dec3.dll")
LoadPlugin("C:\av\avisynth\myplugins\PFR.dll")
mpeg2source("d:\CONTACT_16X9LB_PAL_DISC1\Video_ts\contact.d2v")
PFR()
ResampleAudio(44100)
I tried the script above (the .d2v) is the 1st vob of my PAL Contact DVD.
I use VirtualDub 1.4.13 on Win98SE, Avisynth 20th Aug build.
Couldn't make anything crash (I gave it a good go)
Sorry.
What's the ReSampleAudio(44100) there for?
I don't get audio out of a .d2v file (or am I missing something?:confused: )
regards
Simon
BlueCup
3rd September 2003, 04:37
Even if I do remove the resampleaudio it will still crash my VDub. Maybe it's my source material, I don't know.
Si
3rd September 2003, 20:52
Could you try previous versions of PFR to see if is my filter?
regards
Simon
BlueCup
4th September 2003, 21:12
I just tried every version and had the same result. Vdub crashes after seeking.
It seems to crash after the 3rd frame I view. I could post a very small section of the VOB if you would like to test it on your machine.
Si
4th September 2003, 23:34
Yes please
sapient
8th November 2003, 15:51
@simon
I have tried the latest version of pfr and found it to be buggy too. I have noticed the same bug as others, i.e. virtual dub reporting an error while seeking. Playback of the avs with media player also comes to a crash stop after a few frames.
Have you made any progress in resolving this?
sapient
Si
8th November 2003, 23:00
I'll look into it.
Since the 1st report said it happened with all versions - I assumed it was his setup:o
Can you load an old version and tell me what happens then?
regards
Simon
Si
9th November 2003, 16:06
Well - I got one error once (in about 10 attempts) and I was wildy moving backwards and forwards in VirtualDubMod 1.4.13.
That's about normal for using anything in Avisynth/VirutalDubMod on my system :)
I cannot induce anything with just a straight play of an .avs in MS MPlayer2.
My script
LoadPlugin("c:\av\avisynth\myplugins\PFR.dll")
AVISource("d:\Huffyuv.00.avi")
PFR()
return last
As said , I use VirtualDubMod 1.4.13 and currently on Avisynth Nov3 release. (Win98SE if that makes any diff)
What's your setup and exact script that fails?
regards
Simon
Dermir
1st January 2004, 23:26
I am using Avisynth 2.53, Win2kPro SP4, Mobo ViaKT133A, Duron1300, 512mb RAM, Geforce2 (32mb), Sblive1024
tested with Vdubmod 1.4.13 and 1.5.10.1
tested with pfr 1.5, 1.4, 1.3, 1.2
avisource("e:\capture.avi")
pfr()
Avisynth read error each time on Frame 41 when using the script above
Avisynth read error each time on Frame 42 when using pfr(npif=0)
Avisynth read error each time on Frame 70 when adding reversefielddominance() (what would be wrong) before pfr.
Source is yuy2 huffyuv 2.1.1 ccesp patch 0.2.3, tff, plugins are autoloaded. Tested also with loadplugin - still the error.
Tested on completely progressive content with no blends - no errors (maybe because the filter does nothing there).
Si
3rd January 2004, 23:59
Can you make the 1st 50 frames of your file available for me to download?
regards
Simon
Dermir
4th January 2004, 03:31
Ok, as I am writing the 19,3mb file is being uploaded.
Please check you pm for the link, Simon.
BTW the original capture is no longer on my harddisk, but with this capture (same series, same intro) the error appears everytime on the 5fth or 6th? frame.
I don't remember atm how much traffic is allowed on my site, fifty people should be able to download it without problems, but since this thread has >2000 views... , everyone who wants to try it can post here/pm me and I will pm him/her the link.
Didée
4th January 2004, 14:54
Simon,
bad report from me, too:
PFR has never ever worked for me, regardless of its version number, or the version of AviSynth. It tried it on Huffyuv AVIs, on VBLE AVIs, and on mpeg2-captures served through DVD2AVI1.76/mpeg2dec3.
The famous "AviSynth read error" appears either on the very first frame, or very early after that. I was never able to get more than a dozen frames out of it before the read error occured.
Running WinXP Pro w/o SP on an Athlon XP 1800.
Where to start bug hunting :confused:
- Didée
Si
4th January 2004, 18:17
Well this script
LoadPlugin("c:\av\avisynth\myplugins\PFR.dll")
AVISource("d:\vtest\sample.avi")
PFR()
return last
Works flawlessly on my setup :confused:
The only commmon thing is that all 3 of you that report errors are running Win2K or WinXP and I have Win98SE.
The only time I get errors is if I change the script within VirtualDubMod and then reload by pressing F5. I get then get an error while scrubbing the timeline.
If I exit VirtualDubMod and start again - no problems.
If I load the avs into mplayer2 - no problems.
Maybe it does someting "dirty" that Win98SE lets pass but Win2000+ doesn't let pass :confused:
regards
Simon
scharfis_brain
4th January 2004, 18:28
I've also tried PFR some time ago and never experienced errors while running it.
I am using 98lite (Win98SE)
Dermir
5th January 2004, 01:33
I have also tried the pfr for Virtualdub (aud34b1) - same error as Avisynth-version. So it must be a Win98 <> Win2k/XP thingie. Unfortunately I've got no idea what to change in the source-code, as I've only got some basic C knowledge. Maybe when somebody more proficient takes a look at the source?
Si
4th February 2004, 23:32
Right - after a little discussion over in Development, I've installed Win2000, removed a bug introduced in V1.5 (thanks to sh0dan for finding it) and re-compiled PFR.
It seems to work OK so far on MY win2000 system - lets see what happens on others :)
PFR 1.51 available here (http://www.geocities.com/siwalters_uk/pfravs.html)
Please test it and let me know the results.
regards
Simon
Dermir
6th February 2004, 01:54
Wohoo, it works! No more crahses! Will compare the results to the script from Didée, which will be done hopefully until this evening (its past midnight right now :))
But it seems like the new Avisynth 2.54 is not cooperating with SmartDecimate, I'll take a look.
Didée
6th February 2004, 13:33
Hmm ...
Quickly tested PFR 1.51 under Win98 and W2k (SP3) - on 'my' office PC, not on my own machine.
Win98:
Avisynth read error:
Avisynth: caught an access violation at [somwhere]
attempting to write to [somwhere]
W2k:
just the same as above.
In lack of any helpful ideas, me just shrugs shoulders.
- Didée
Dermir
6th February 2004, 17:13
Ok, my working config is:
Duron 1300 (Morgan with SSE)
Win2k-prof/SP4
Vdubmod 1.5.10.1 v2424 (18. January)
either Avisynth 2.53 or 2.54
pfr.dll is autoloaded
Si
6th February 2004, 17:28
@didee :(
Could you post a sample source file somwhere that'll cause the error along with your script and a list of any other dll's in your autoload plugin dir
regards
Simon
Didée
7th February 2004, 12:17
Alas, it seems independand of anything.
This script:
LoadPlugin( "Path/to/pfr.dll" )
AviSource( "Path/to/source.avi" )
PFR()
already crashes.
- Tried mpeg2 sources as well as AVI sources, same error.
- My Plugins are _always_ loaded manually. (Not one single autoload was ever performed on my side.)
I now tested also on my home PC #1 (Athlon XP, WinXP pro SP1) as well as PC #2 (Intel Celeron, WinXP pro SP1, new installation)
On these two machines, it doesn't crash immediately, though! Here, I get about 6~8 frames into the clip (Athlon system) or 10~20 frames into it (Celeron system) before the out-of-bounds read occurs.
But if the filter has actually nothing to do (feeding a progressive source), no crash happens.
I have no idea what might be the problem, sorry.
- Didée
Wilbert
7th February 2004, 15:41
When autoloading I get an 'ran out of memory' error message when opening any script.
When manually loading I don't get any error message. Athlon XP, W2K.
Si
7th February 2004, 15:42
What resolution was your avi?
Coudl I have a copy of it?
What program are you using to view the avi?
regards
Simon
vBulletin® v3.8.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.