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. |
20th September 2018, 07:03 | #21 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Just replace the SetFieldBased lines with SetFrameProp lines between the resample lines You can verify with MakeDiff , as shown in the earlier example |
|
20th September 2018, 07:12 | #22 | Link | |
Cary Knoop
Join Date: Feb 2017
Location: Newark CA, USA
Posts: 397
|
Quote:
This does NOT work for me: Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") c = core.std.SetFieldBased(c, 0) c = core.std.SetFieldBased(c, 2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=True)[::2] This does NOT work for me either: Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") c = core.std.SetFieldBased(c, 0) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=True)[::2] Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") c = core.std.SetFieldBased(c, 0) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=False)[::2] |
|
20th September 2018, 07:24 | #23 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
You forgot to replace the other SetFieldBased. (Don't use SetFieldBased. At all)
Quote:
instead of Code:
c = core.std.SetFieldBased(c, 0) c = core.std.SetFieldBased(c, 2) Code:
c = core.std.SetFrameProp(c, prop="_FieldBased", intval=0) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) |
|
20th September 2018, 07:42 | #24 | Link | |
Cary Knoop
Join Date: Feb 2017
Location: Newark CA, USA
Posts: 397
|
Quote:
But, this does work: Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") ntval=2) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=0) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=False)[::2] Code:
c = core.std.SetFieldBased(c, 0) c = core.std.SetFieldBased(c, 2) Code:
c = core.std.SetFrameProp(c, prop="_FieldBased", intval=0) c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) |
|
20th September 2018, 07:50 | #25 | Link |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
It works here. There is a clear handling difference, and you can verify it again by explicitly forcing the resample switch for interlaced=True/False, tff=0/1 . In one case the behaviour of resample follows what the props are set to (SetFrameProp). In the other, they are not (SetFieldBased) .
If it doesn't work for you, we are back to : what is your source, what is your source filter |
20th September 2018, 08:22 | #26 | Link | |
Cary Knoop
Join Date: Feb 2017
Location: Newark CA, USA
Posts: 397
|
Quote:
Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") c = core.std.SetFieldBased(c, 0) # # Some progressive processing # c = core.std.SetFieldBased(c, 2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=True)[::2] Code:
c = core.std.SeparateFields(c, tff=True) c = core.fmtc.resample(c, scalev=2, css="444", kernel="point") c = core.std.SetFrameProp(c, prop="_FieldBased", intval=0) # # Some progressive processing # c = core.std.SetFrameProp(c, prop="_FieldBased", intval=2) c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point") c = core.std.DoubleWeave(c, tff=True)[::2] Last edited by Cary Knoop; 20th September 2018 at 08:25. |
|
20th September 2018, 15:11 | #27 | Link | |
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Yes; and "not work" means shifting or difference . "Work" means no shifting or difference (confirmed by MakeDiff) . "Work" means the props are passed to the next filter If you explicitly set interlaced=True, tff=1 for the 2nd fmtc.resample (and keeping DoubleWeave tff=true) what happens ? Recall I said if you use c=core.std.SetFieldBased(c,2) , you can also "fix" it by explicitly forcing the next resample to interlaced=True, tff=1 (ie. c = core.fmtc.resample(c, scalev=0.5, css="444", kernel="point", interlaced=True, tff=1). At least those are what I'm seeing here. That suggests those SetFieldBased properties are not being passed to the next filter (the behaviour of the next filter isn't taking your SetFieldBased override into account automatically). But when you use SetFrameProp(c,prop="_FieldBased", intval=2) it works, whether or not you explicitly set interlaced=True, tff=1 . That suggests that info is being passed to the next filter automatically and it's being used .But, if you force interlaced=False or tff=0, you get artifacts and shifting too because it's being done differently This is potentially important because not all filters have explicit interlaced=true/false, TFF/BFF switches. Some rely on what the props are. So how are you "viewing" this or converting to RGB for viewing ? For me, SetFieldBased doesn't work as expected and it says in the documentation it's experimental. But SetFrameProp works, and works on many parameters , not just the ones here Last edited by poisondeathray; 20th September 2018 at 15:19. |
|
20th September 2018, 17:17 | #28 | Link |
Cary Knoop
Join Date: Feb 2017
Location: Newark CA, USA
Posts: 397
|
I can confirm that for TFF sources, in trivial cases, the SetFrameProp with DoubleWeave() using TFF works.
But it does not work for the code I use, perhaps this is related to some filters not using the props. Adding the code I use, which uses all kinds of filters, is simply too complex to put here. But the code does work if DoubleWeave() uses BFF both for SetFrameProp() and SetFieldBased(). I suspect something in Vapoursynth sets information always to BFF regardless whether the source is TFF or BFF after applying SeparateFields(). |
20th September 2018, 20:05 | #29 | Link | ||
Registered User
Join Date: Sep 2007
Posts: 5,346
|
Quote:
Quote:
You're probably going to have to provide something more concrete and tangible, something that can be reproduced to demonstrate the problem clearly |
||
24th September 2018, 21:25 | #31 | Link | |
Cary Knoop
Join Date: Feb 2017
Location: Newark CA, USA
Posts: 397
|
Quote:
I would not use SetFieldBased() at all. Thanks for your help! |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|