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.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage
Register FAQ Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
Old 12th June 2017, 22:53   #1  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Ghetto bobbing

When meth addicts steal your bobbers and you're too poor to buy new ones, what can you use instead? Here are two options:

Code:
mpeg2source("212.d2v").converttorgb().separatefields()

A=selecteven().GeneralConvolution(0,"0 0 0 0 3 0 0 1 0")
B=selectodd().GeneralConvolution(0,"0 1 0 0 3 0 0 0 0")

Interleave(A,B).spline64resize(720,480)
Code:
mpeg2source("212.d2v").converttorgb().separatefields().spline64resize(720,480)

A=selecteven().GeneralConvolution(0,"0 0 0 0 1 0 0 1 0")
B=selectodd().GeneralConvolution(0,"0 1 0 0 1 0 0 0 0")

Interleave(A,B)
The second method yields slightly less horrible results. Both suffer from the fact that using generalconvolution as a sub-pixel shifter results in unnecessary blurring. It would make more sense to do the shifting during the resize step, but that would require cropping (including negative cropping), which I'd rather avoid...

Code:
mpeg2source("212.d2v").converttorgb().separatefields()

A=selecteven().spline64resize(720,480,src_left=0,src_top=0.25,src_width=720,src_height=240)
B=selectodd().spline64resize(720,480,src_left=0,src_top=-0.25,src_width=720,src_height=240)

interleave(A,B)
Is ghetto bobbing possible without destruction of the original data?

EDIT: wait. I think that's what I accidentally succeeded in doing... can anyone check and make sure I'm not crazy?
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.

Last edited by Katie Boundary; 12th June 2017 at 23:51.
Katie Boundary is offline   Reply With Quote
Old 12th June 2017, 23:11   #2  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,496
...what?

Quote:
Both suffer from the fact that using generalconvolution as a sub-pixel shifter results in unnecessary blurring.
They also suffer from being stupid things to do to a video. It's frankly mindboggling that you invest so much time in deliberately screwing up videos.

Why don't you just use bob(), for goodness' sake? Or one of the far, far better alternatives you've been told about over and over and over?

I dread to think what a newbie would make of this place if he accidentally thought something you'd posted was what counted as reasonable, well-informed advice here.
__________________
My AviSynth filters / I'm the Doctor
wonkey_monkey is offline   Reply With Quote
Old 12th June 2017, 23:16   #3  |  Link
TheFluff
Excessively jovial fellow
 
Join Date: Jun 2004
Location: rude
Posts: 1,100
Bobbing is by its nature a subpixel shift, which means it is by definition an interpolating operation. You want to move the sampling points (pixel centers) by a fractional distance between two such points, so you have to interpolate between the samples to find new ones.

Speaking of which though, what's your stance on considering pixels as square areas rather than sampling points, these days?
TheFluff is offline   Reply With Quote
Old 13th June 2017, 00:14   #4  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,904
Quote:
Originally Posted by Katie Boundary View Post
what can you use instead?
Code:
QTGMC( Preset="Slow", EdiMode="EEDI3+NNEDI3")
FranceBB is offline   Reply With Quote
Old 13th June 2017, 00:27   #5  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by TheFluff View Post
Speaking of which though, what's your stance on considering pixels as square areas rather than sampling points, these days?
It hasn't changed, though I'm more consciously aware of the difference between physical display pixels, which are always rectangular and nearly always square, and recorded data pixels, which aren't anything (not even infinitely small sample points) until interpreted.

Quote:
Originally Posted by FranceBB View Post
Code:
QTGMC( Preset="Slow", EdiMode="EEDI3+NNEDI3")
That's not ghetto. That's a fancy rich-people bobber. This thread is about ghetto bobbing.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 13th June 2017, 00:39   #6  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
That's a fancy rich-people bobber.
Nah, tis free, Open Source bobber. rich or poor alike can use it.

EDIT: Considered by many, a "Sane Person bobber"
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???
StainlessS is offline   Reply With Quote
Old 13th June 2017, 01:01   #7  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by StainlessS View Post
Nah, tis free, Open Source bobber. rich or poor alike can use it.

EDIT: Considered by many, a "Sane Person bobber"
Regardless, it does not advance the extremely important study of ghetto bobbing (bob-deinterlacing video without a proper bob-deinterlacer)
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 13th June 2017, 09:10   #8  |  Link
Sharc
Registered User
 
Join Date: May 2006
Posts: 3,997
@Katie
You gave the answers yourself, I think ....
You can compare (frame by frame...) your 3 proposals with standard bobbers easily by interleaving all versions and stepping through, or by arranging the versions as rows and columns for simultaneous real time playback.
At the end of your scripts you should add
Code:
AssumeFrameBased()
What comes next? A ghetto resizer?

Edit:
So here is what I got from a 1920x1080i25 video source:
http://www.mediafire.com/file/034d1j...to_Bobber1.mkv

Last edited by Sharc; 13th June 2017 at 12:31. Reason: Example added
Sharc is offline   Reply With Quote
Old 13th June 2017, 13:44   #9  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by Sharc View Post
What comes next? A ghetto resizer?
It's called crop lol
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 14th June 2017, 02:04   #10  |  Link
VS_Fan
Registered User
 
Join Date: Jan 2016
Posts: 98
I don’t see how your experiment would be faster or result in higher quality/ fidelity than Bob(0.0, 1.0), which will “strictly preserve the original fields and just fill in the missing lines”. See bottom of this page.

It works for RGB and both luma and chroma in YV16 and YUY2. More details in the following two forum posts.
VS_Fan is offline   Reply With Quote
Old 14th June 2017, 06:59   #11  |  Link
Sharc
Registered User
 
Join Date: May 2006
Posts: 3,997
Quote:
Originally Posted by VS_Fan View Post
I don’t see how your experiment would be faster or result in higher quality/ fidelity than Bob(0.0, 1.0), which will “strictly preserve the original fields and just fill in the missing lines”. See bottom of this page.

It works for RGB and both luma and chroma in YV16 and YUY2. More details in the following two forum posts.
Yes, but I think you missed the point. She didn't claim that her proposals are faster or better. In her hypothetical meth addict scenario she assumed that there exisit no bob, tdeint, yadif, QTGMC etc. and wanted to know whether her ghetto proposals for bobbing are insane.
Sharc is offline   Reply With Quote
Old 14th June 2017, 07:57   #12  |  Link
TheFluff
Excessively jovial fellow
 
Join Date: Jun 2004
Location: rude
Posts: 1,100
Experimenting with doing simple operations using only basic video processing tools like convolutions shouldn't be discouraged even if it has no practical use in reality.
TheFluff is offline   Reply With Quote
Old 14th June 2017, 18:56   #13  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by Sharc View Post
Yes, but I think you missed the point. She didn't claim that her proposals are faster or better. In her hypothetical meth addict scenario she assumed that there exisit no bob, tdeint, yadif, QTGMC etc. and wanted to know whether her ghetto proposals for bobbing are insane.


Quote:
Originally Posted by TheFluff View Post
Experimenting with doing simple operations using only basic video processing tools like convolutions shouldn't be discouraged even if it has no practical use in reality.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 14th June 2017, 19:14   #14  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
In the first post shouldn't it be ConvertToRGB(interlaced=true) since you're using it right after the source filter ? Or are ghetto rules different ?

Ghetto Supastar. That is what you are.
https://www.youtube.com/watch?v=RtIGCGu9L90
poisondeathray is offline   Reply With Quote
Old 19th June 2017, 04:43   #15  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
What difference would it make? Remove converttorgb() entirely if it makes you feel better. It's only there for TMPEGEnc compatibility, and as a prerequisite for generalconvolution.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.

Last edited by Katie Boundary; 19th June 2017 at 04:47.
Katie Boundary is offline   Reply With Quote
Old 19th June 2017, 04:59   #16  |  Link
poisondeathray
Registered User
 
Join Date: Sep 2007
Posts: 5,377
Quote:
Originally Posted by Katie Boundary View Post
What difference would it make? Remove converttorgb() entirely if it makes you feel better. It's only there for TMPEGEnc compatibility, and as a prerequisite for generalconvolution.


The difference is chroma artifacts from progressive upsampling of chroma, but since you put it after the source filter, you're still interlaced. You'll get "chroma ghosting" interlaced artifacts as demonstrated below in the field, before you even do anything else

You can't remove it completely if you plan to use generalconvolution - and wasn't that the main idea you were playing with ?

The solution is put it after separatefields() , or use interlaced=true if you leave it as you initially had it




Last edited by poisondeathray; 19th June 2017 at 05:28.
poisondeathray is offline   Reply With Quote
Old 23rd June 2017, 03:52   #17  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
Quote:
Originally Posted by poisondeathray View Post
"chroma ghosting" interlaced artifacts


Those are exactly the artifacts that I've been seeing in the early seasons of South Park. This warrants further investigation. Thank you.
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 23rd December 2018, 01:04   #18  |  Link
Katie Boundary
Registered User
 
Katie Boundary's Avatar
 
Join Date: Jan 2015
Posts: 1,056
BTW, ghetto bobbing can be fed into Yadifmod2, with VERY good results,

Quote:
A=separatefields().selecteven().spline144resize(720,480,src_left=0,src_top=0.25,src_width=720,src_height=240)
B=separatefields().selectodd().spline144resize(720,480,src_left=0,src_top=-0.25,src_width=720,src_height=240)

C=interleave(A,B)

yadifmod2(mode=3,edeint=C)
However, I have no idea why you would want to do this, seeing as how using yadifmod defeats the point of ghetto bobbing. Maybe, due to the difference in interpolation methods, it would use slightly fewer CPU cycles than normal Yadif or any other temporally-aware bobber?
__________________
I ask unusual questions but always give proper thanks to those who give correct and useful answers.
Katie Boundary is offline   Reply With Quote
Old 23rd December 2018, 01:29   #19  |  Link
wonkey_monkey
Formerly davidh*****
 
wonkey_monkey's Avatar
 
Join Date: Jan 2004
Posts: 2,496
A plea to anyone reading this thread: don't.

Quote:
However, I have no idea why you would want to do this
We can agree on that, at least.
__________________
My AviSynth filters / I'm the Doctor
wonkey_monkey is offline   Reply With Quote
Old 23rd December 2018, 02:26   #20  |  Link
johnmeyer
Registered User
 
Join Date: Feb 2002
Location: California
Posts: 2,695
Quote:
Originally Posted by davidhorman View Post
A plea to anyone reading this thread: don't.
Yeah, why necro your own really dumb thread in order to ... say absolutely nothing new?
johnmeyer is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 06:19.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.