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

Reply
 
Thread Tools Search this Thread Display Modes
Old 23rd November 2013, 19:07   #21  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Sorry Fred, MediaFire problem, hopefully just temporary but till fixed try here: LINK REMOVED
__________________
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 ???

Last edited by StainlessS; 29th November 2013 at 15:28.
StainlessS is offline   Reply With Quote
Old 23rd November 2013, 19:11   #22  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Sorry, even that one seems to have a problem, except for me, try again here: LINK REMOVED

EDIT:
Arh, see what you mean, the updated scripts are in RT_Stats zip here: LINK REMOVED
__________________
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 ???

Last edited by StainlessS; 29th November 2013 at 15:28.
StainlessS is offline   Reply With Quote
Old 23rd November 2013, 19:17   #23  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
See Above Edit Fred.
__________________
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 23rd November 2013, 19:44   #24  |  Link
FredThompson
Registered User
 
FredThompson's Avatar
 
Join Date: Feb 2002
Location: Charlotte, NC USA
Posts: 1,981
Thanks. I've edited my previous post to expand on the goals of my current project. Would appreciate any help you will offer.
__________________
Reclusive fart.
Collecting Military, Trains, Cooking, Woodworking, Fighting Illini, Auburn Tigers
FredThompson is offline   Reply With Quote
Old 23rd November 2013, 20:11   #25  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Quote:
Originally Posted by FredThompson View Post
Mediafire link is a 404. Did you intend to have an updated script set there?

I am looking for a way to autocrop frames such as the attached screenshot. Preferred method would be a scan of an entire file with the minimal crop values returned. Seems the entire stream should be checked due to the variable cropping mentioned above. Results will be used to generate encoder scripts with video bitrate a function of post-cropped frame-size. My hope is to use RoboCrop in a pre-scan to generate crop values for each file in the queue, preserving field order and block sizes so crap and frame would be the result. Output from RoboCrop would probably go into a file with a format similar to:

filename
cropx1
cropx2
cropy1
cropy2
framewidth
frameheight

or something similar which can be easily parsed by a batch file. End result of my process will be a job queue of various frame sizes, rates and source codecs which can be loaded into Hybrid encoding GUI for a "encode all in directory to a target quality/size" process.

Another example of this type of unwanted junk is at:

http://forum.doom9.org/showthread.php?p=1651430#post1651430

Notice how close the noise is to the desired video data. Perhaps a grayscale vs. chroma determination would help.

I assume this is extra junk that DirecTV uses for the guide data or extra information for a show, maybe it's the bitmap for the recorded show.

Background to this project is at:

http://forum.doom9.org/showthread.php?t=169673
I would need to disable the auto start/end credits skipping, and give alternative method of selecting samples, eg percentage of frames to scan (maybe user calc something like 100.0 / FrameRate for 1 frame per second, scanned, or 10.0 % for 1 in ten scanned). Have to think about the morse code stuff, and waiting to see attachment.
__________________
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 24th November 2013, 03:35   #26  |  Link
FredThompson
Registered User
 
FredThompson's Avatar
 
Join Date: Feb 2002
Location: Charlotte, NC USA
Posts: 1,981
Yes, I was thinking about 1 frame every 15 or 30 frames through the whole file. It's a very different use than you've envisioned but a related concept.

Letterboxed source with the "morse code" is fairly easy because there will be a number of near-black lines above and below the source. Test from the bottom then use that indicate relative upper cutoff location.

Non-letterboxed source with that crap in the top few lines is the challenge. Sometimes it's one line, The sample I made is probably the most complex I've seen, four or five lines. That's a LOT of extra data. My original idea was to overwrite those lines with black to preserve aspect ratio.

The DirecTV files I have with the crap in them are all 480x480 or 544x480 SD. If there are other formats with junk, I don't know about them.
__________________
Reclusive fart.
Collecting Military, Trains, Cooking, Woodworking, Fighting Illini, Auburn Tigers
FredThompson is offline   Reply With Quote
Old 24th November 2013, 16:59   #27  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Having seen you attachment, think all that really is needed is avoid start/end credits skipping. You can calc samples as FrameCount / 30
or whatever and the Baffle setting would avoid the morse code anyway (can set higher than default 4), setting Blank to true would blank
out the border area. Would work best if converted to YV24 allowing blanking of individual scanlines.
Ill add something to avoid credits skipping and let you have a try with that.

EDIT:
Quote:
Non-letterboxed source with that crap in the top few lines is the challenge. Sometimes it's one line,
Not sure that single line of morse could be detected if no additional lines of black. The Baffle setting controls the minimum
number of consecutive lines that have to be above Threshold, to be detected as image rather than border.
Your attachment should be no problem but baffle might need be raised if morse thicker than Baffle default of 4.
__________________
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 ???

Last edited by StainlessS; 24th November 2013 at 17:33.
StainlessS is offline   Reply With Quote
Old 25th November 2013, 19:27   #28  |  Link
FredThompson
Registered User
 
FredThompson's Avatar
 
Join Date: Feb 2002
Location: Charlotte, NC USA
Posts: 1,981
thanks.
__________________
Reclusive fart.
Collecting Military, Trains, Cooking, Woodworking, Fighting Illini, Auburn Tigers
FredThompson is offline   Reply With Quote
Old 25th November 2013, 20:31   #29  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Fred can you up a sample somewhere, think I got an idea that might work for morse without letterboxing, about two minutes should do.
__________________
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 25th November 2013, 22:11   #30  |  Link
FredThompson
Registered User
 
FredThompson's Avatar
 
Join Date: Feb 2002
Location: Charlotte, NC USA
Posts: 1,981
Fantastic news! Yes, am putting one up now. Will send you a PM with a link.
__________________
Reclusive fart.
Collecting Military, Trains, Cooking, Woodworking, Fighting Illini, Auburn Tigers
FredThompson is offline   Reply With Quote
Old 29th November 2013, 15:27   #31  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Link to MediaFire in sig now working OK, removed temp links.
__________________
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 1st December 2013, 03:49   #32  |  Link
jmac698
Registered User
 
Join Date: Jan 2006
Posts: 1,865
Feature request,
Hi, it's the season for planet cropping again, and I just came up with a really clean way to do it. What I'd like is a tracking crop. What this means is that, I supply frame1 and frame100 and it computes the cropping values for each, then draws a linear line between them, and uses that for the search zone.

In the ideal case, planets move in a perfect straight line across the camera as the earth turns. But it's not exactly because of lens distortions and other things. You can speed up cropping tremendously by tracking the search area. Sometimes I'm tracking only 20x20 pixels in a 16MP image. There's also the possibility of passing by some other bright object that can fool plain luma detection.

So the parameters would be, start/end frame to find endpoint locations, initial search window w/h/x/y, and tween search window size, and all the usual detection parameters. Also the option for simple tracking with no detection at all in the tweens.

some samples here
http://imgur.com/FnbRhes,wOBrbPf,E2y7UUy,lOBJ5oT,NQOEk3y,GIBgUhD#0
jmac698 is offline   Reply With Quote
Old 1st December 2013, 19:24   #33  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Jmac, surely animate could be persuaded to do that.

EDIT: Also, see no real advantage to 'tracking' estimate to were planets are, the RT_YInRangeLocate fn
in PlanetCrop is really quite fast and I dont really fancy spending quite a lot of time coding to save a second
or two every now and then.
__________________
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 ???

Last edited by StainlessS; 1st December 2013 at 22:33.
StainlessS is offline   Reply With Quote
Old 17th January 2014, 05:05   #34  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
RoboCrop v1.03, updated 26 Dec 2013.

Code:
	v0.20, Changed, range massage switch on frames to below 1500 (from 1000).
	v0.21, Autothresh Massaging changed minimum to -1.5 from -0.5.
	v1.00, Added ATM arg.
	v1.02, Added Start & End args, Changed default rec709 switch to width > 1100 || height > 600.
	v1.03, Minor mods.
__________________
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 11th October 2014, 01:58   #35  |  Link
Reginald0
RegiOween
 
Reginald0's Avatar
 
Join Date: Aug 2006
Posts: 15
Hi, folks! Sorry if I miss something in the doc, but is it possible to adjust specific values like in the AutoCrop plugin?

Quote:
AutoCrop(mode=0, leftadd=4, rightadd=2, topadd=8, bottomadd=6)
Reginald0 is offline   Reply With Quote
Old 11th October 2014, 17:52   #36  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
Suggest trying a greater value of auto Thresh (greater being more -ve). I wish now that I had used a more -ve default AutoThresh (is -32.0),
I sometimes find that RoboCrop() does leaves a little dark line (which is perhaps about AverageLuma ~48.0 to ~56.0, but still appears as dark edge
when adjacent to lighter image). If I have a problem clip (maybe about 1 in 30 or 40, or thereabouts), I just try a Thresh of eg -50.0 sometimes takes -64.0, and the line disappears. Might also prove better with the occasional clip to raise Baffle to eg 8 from default 4. AutoCrop() would also fail with the problem clips leaving a line,
but a lot more often and with worse results, AutoCrop gets it wrong a lot more often than RoboCrop and occasionally eats up more image than it leaves intact.
I would suggest that you try the above fix (make Thresh more -ve), and if not satisfactory, then will look at adding the suggested args, (LeftAdd etc).

EDIT: I have a 10min sample VOB from Cabaret (Liza Minnelli) that AutoCrop crops about 200 pixels both left and right sides, rather than maybe about 4 pixels either side (default settings). RoboCrop gets it bang on correct with only a single sample (Default 32, although it would depend upon which frame was chosen to sample, AutoCrop and RoboCrop do not use similar methods to select sample frames).
__________________
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 ???

Last edited by StainlessS; 11th October 2014 at 22:38.
StainlessS is offline   Reply With Quote
Old 13th October 2014, 01:07   #37  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
v1.13 Docs, part 1 of 2 (Post #1 only has v1.0 docs due to draconian D9 post size restrictions)
Code:
RoboCrop()

To Protect And Serve - by StainlessS @ Doom9:- http://forum.doom9.org/showthread.php?t=168053
Requires VS2008 CPP Runtimes.

VIDEO: Planar, YUY2, RGB (Must be Seekable ie best not DivX or XVid).
AUDIO: No change.

Plugin's for both Avisynth v2.58 and v2.6 (avs+ x86 & x64).

RoboCrop is an automatic cropping solution to crop black borders from video clips, loosely based on (but using no code from)
Autocrop by Glenn Bussell.

For the most part, you can just call it with RoboCrop(clip) and not bother with any other arguements, it is intended to be pretty
much autonomous in its decisions. You might however want to alter eg WMod/HMod if your encoder has special requirements, and
perhaps Laced if your source is likely to be fully progressive.

Borders are detected by sampling at Samples frames, at scanlines (h/v) using AverageLuma (RGB is converted to Luma Y at either TV or
PC levels, See Matrix). This sampling is done on all 4 sides of the frame.
If a scanline Average luma is below or equal to Thresh, then is considered possible black border, above considered possible image,
if Baffle [default=4] adjacent scanlines above Thresh, then it IS image.

Function RoboCrop(clip c,int "Samples"=40,Float "Thresh"=-40.0,bool "Laced"=true,int "WMod",int "HMod",int "RLBT"=15,bool "Debug"=false, \
    float "Ignore"=0.4,int "Matrix"=(c.Width>1100||c.Height>600?3:2), int "Baffle"=4, bool "ScaleAutoThreshRGB"=true,
    bool "ScaleAutoThreshYUV"=false, int "CropMode"=2,bool "Blank"=false,bool "BlankPC"=false,bool "Align"=True,bool "Show"=false, \
    String "LogFn"="",bool "LogAppend"=false, Float "ATM"=4.0,int "Start"=Undefined,Int "End"=Undefined, \
    Int "LeftAdd"=0,Int "TopAdd"=0,Int "RightAdd"=0,Int "BotAdd"=0, \
    Int "LeftSkip"=0,Int "TopSkip"=0,Int "RightSkip"=0,Int "BotSkip"=0 \
    Float "ScanPerc=49.0,String "Prefix"="ROBOCROP_" )


 Args:-

   Samples=40, Number of frames to sample from source clip c. v1.06 changed default from 32 to 40.
    As an observation, most clips have good border recogition within the 1st 2 or 3 sampled frames using the default -40.0 AUTOTHRESH
    although have noticed some dark clips that required ~8 samples (maybe more) for full recognition @ default Thresh = -40.0
    We use a default Samples=40, because we are intrinsically paranoid.
      If number of frames between frame at 5% of framecount and frame at 90% of framecount is greater than 250 and is also greater
    than Samples, will ignore the first 5% and last 10% of frames when both auto-thresholding and crop sampling to try to negate
    effects of artificial black in titles and end credits. Can override the Auto Credits skipping by setting Start and/or End frame
    of the range to sample.
      Samples = 0, will be converted to Samples = FrameCount, ie auto credits skipping disabled  and ALL FRAMES SAMPLED,
    of use for very short scenes, not for general full movie clips.
    Set eg Samples = Int(FrameCount * 2.0 / 100.0 + 0.5) to sample 2.0% of frames in clip.

   Thresh: Default= -40.0 (==DEFAULT AUTOTHRESH, any -ve (or 0.0) Thresh is AUTOTHRESH where Thresh adjustments are automatic).
    v1.06, Changed DEFAULT AUTOTHRESH from -32.0 to -40.0.
    v1.07, Changed to recognise a Thresh of either -32.0 or -40.0 as DEFAULT_AUTOTHRESH (fully automatic).

    Thresh > 0: (Explicit Threshold)
      A user supplied +ve Thresh should be at correct TV/PC levels for the the clip being worked on ie 16->235 for TV levels and
      0->255 for PC Levels (RGB, as appropriate for matrix being used).

    Thresh <= 0: (AUTOTHRESH)
      When Thresh <= 0, the clip will be sampled over Samples frames to find the minimum YPlaneMin (using Matrix if RGB) which
      we will call MINLUMA and an Explicit Threshold calculated by adding MINLUMA to abs(Thresh), after that it is processed
      as for Thresh > 0: (Explicit Threshold) as noted above, but, before adding MINLUMA, some AUTOTHRESH massaging and scaling occurs.

      Here AUTOTHRESH Thresh massaging and scaling occurs in sequence:-
      1 ) if (Thresh == DEFAULT AUTOTHRESH && ATM < abs(thresh))
              (DEFAULT AUTOTHRESH = exactly -40.0, defaulted OR user supplied, v1.07 also recognises -32.0 as DEFAULT_AUTOTHRESH):
            Let sampstart and sampend, be starting and ending frames numbers after any Auto Credits skipping and/or user set Start or End.
            Let Samples be limited to sampend-sampstart+1.
            Let SampRange (Sample Range) = SampEnd-SampStart+1.
            samples_massage =(Samples>=20)           ? 1.0 : (Samples-1)   * (1.0/(20-1))           # No massaging if Samples >= 20
            range_massage   =(SampRange >= (250*20)) ? 1.0 : (SampRange-1) * (1.0/((250*20)-1))     # No massaging if SampRange >= 5000
             Both samples_massage and range_massage will be in range 0.0 to 1.0.
             Thresh = -(((samples_massage * range_massage) * (abs(Thresh) - ATM)) + ATM)
              This adjustment to Auto Thresh is to reduce the possibility of overcropping on eg a dark low 'Samples' clip, or where
              source SampRange (ie temporal frame set) is too small to take a reliable sample from.
              Resulting massaged Thresh will range between -ATM and DEFAULT_AUTOTHRESH.
              Although massaging is intended to reduce overcropping, it could result in not cropping enough border (less disastrous),
              its a bit of a balancing act really. See also ATM.
      2 ) If RGB AND PC matrix(default) AND ScaleAutoThreshRGB==True(default) then
            Thresh= Thresh*(255.0/(235-16))
      3 ) If YUV AND ScaleAutoThreshYUV==True(default=false) then
            Thresh= Thresh*(255.0/(235-16))

      Steps 2) and 3) above, by default treat a -ve AUTOTHRESH as being @ TV Levels and so Scale RGB Thresh to PC levels but not YUV.
      If you want to supply a PC levels AUTOTHRESH Thresh for RGB, then simply set ScaleAutoThreshRGB=false to inhibit scaling.
      Note, if a TV levels Matrix is supplied for RGB, then scaling will always be inhibited.
       If your clip is YUV at PC levels and you want to use eg DEFAULT AUTOTHRESH (-40.0, which is considered to be @ TV levels),
      then set ScaleAutoThreshYUV=True to enable Thresh scaling.
       If your clip is YUV at PC levels and you want to use a PC levels AUTOTHRESH (-ve) then leave ScaleAutoThreshYUV at default false
      which does not scale Thresh.
      After any scaling, MINLUMA is then added to abs(Thresh) and processed as for +ve Explicit Threshold as noted above.
      NOTE, Above RoboCrop step 1) 'massages' DEFAULT_AUTOTHRESH (exactly -40.0 or v1.07 exactly -32.0) if low samples count or if short clip.
      Reason being to avoid overcropping when insufficient data available for reliable cropping. It is considered better to not crop enough
      or at all, than to overcrop. You can override by simply setting an explicit threshold (+ve) of eg 40.0, or setting a NON-DEFAULT auto thresh
       (-ve) eg -16.0 or -40.1, where YPlaneMin is established for the sampled frames and then abs(thresh) is added to that value which
       is then used as an explicit thresh.
      NOTE, v1.07 recognises a Thresh of either -40.0 OR -32.0 as DEFAULT_AUTOTHRESH, so user can provide either value and
      DEFAULT_AUTOTHRESH massaging will be applied for low samples count and/or low frame ranges.

   Laced:, Default=true, true for Interlaced.
          RoboCrop automatically deduces colorspace cropping restrictions and sets internal XMod and YMod,
          eg XMod and YMod would both be set to 2 for YV12, for YUY2 Xmod=2, YMod=1, etc.
          If Laced==true(default), then internal YMod is doubled so as not to destroy interlaced chroma.
          Below HMod is defaulted to internal YMod after the Laced hint is applied to YMod.
          You can set Laced=False if your source is known Progressive, if your dont then you may lose a few scanlines.

   WMod:, Default=Max(XMOD,4), Where XMOD is the natural chroma cropping restriction of the colorspace concerned, eg 2 for YV12.
       WMod MUST be a multiple of internal XMOD as described above, or it will throw an error.
         v1.06, Changed default from XMOD to Max(XMOD,4), this is for several reasons, some encoders, media players and VDubMod
       demand WMOD==4 ie width an exact multiple of 4 (some Mpeg encoders may demand WMOD=16 which you would have to set yourself).
       In addition to above, Avisynth v2.58 kicks up a fuss if any YUV colorspace clip with Width not an exact multiple of 4 is
       returned as final result clip (intermediate clips only have to comply with colorspace XMOD requirment). It is not really
       the job of any plugin to guess whether it's result will be the final return clip and so is not really for RoboCrop to
       enforce WMOD=4 for eg YV12, BUT, combined with the other reasons above, it was decided to change default WMOD to Max(XMOD,4),
       you will have to set eg WMOD=2 manually if required for eg YV12 or YUY2, or WMOD=1 for eg RGB32 if that is what you want.
       Avisynth has no problem returning eg RGB32 with an odd width, but at least one player had problems when RGB32 was XMOD=2
       about 12 months prior to writing this (now fixed). WMOD set to 4 [as Max(XMOD,4) will likely be] will be least problematic
       choice but you know what you require and can set WMOD to suit.
         Some encoders may require an WMod/HMod of eg 8 or 16, and if set thus, would crop off more or less depending upon
       which CropMode is set, if later resizing will be done, then encoder requirements can be satisfied during the resize.
       NOTE, Some players and VirtualDubMod (Helix YV12 decoder) dont like WMOD less than 4 (Vdub latest, OK, internal decoder).
       If eg VDMod shows blank frame, OR eg player halts saying eg "No combination of filters cound be found to render frame"
       then WMod needs to be a multiple of 4.
       NOTE, RT_Stats has a function RT_GetProcessName() which could be used to set WMod=4 only for specific programs eg,
          RoboCrop(WMod=(RT_GetProcessName=="VirtualDubMod.exe") ? 4 : Last.RT_ColorspaceXMod) # Where VDubMod opened Avisynth
       v1.08, limited WMod to max 16.

   HMod:, Default=The natural chroma cropping restriction of the colorspace concerned, BUT, doubled if laced=true.
    HMod MUST be a multiple of internal YMod as described under Laced above, or it will throw an error. If eg colorspace is
      YV12 then YMod would be set to 2, and if Laced, then YMod would be doubled to 4, so HMod MUST be a multiple of 4.
    v1.08, limited HMod to max 16.

    RLBT:=15=All Borders, Bitflags of borders to detect, 15 ($0F) crops all four. Each letter in the name 'RLBT' represents an edge and bit position
      starting with 'R' in bit 3 representing the value 8 (2^3=8). 'L' = bit 2=4 (2^2=4), 'B' = bit 1=2 (2^1=2), 'T' = bit 0=1 (2^0=1).
      To calculate the RLBT bitflags, for 'R'(Right) add 8, for 'L'(Left) add 4, for 'B'(Bottom) add 2, and for 'T'(Top) add 1.
      Add all of the bit flags together 8+4+2+1 (=15) crops all four edges, 8+4 crops only Right & Left, and 2+1 crops only Bottom & Top.
      RLBT affects border detection.
      User Skips eg LeftSkip are applied irrespective of what RLBT is set to.
      User adjustments eg LeftAdd are applied irrespective of what RLBT is set to.

    DEBUG:=False=No Debug. Set True for debugging info, need DebugView: http://technet.microsoft.com/en-gb/sysinternals/bb545027
      The debug info output shows eg range limiting of Samples and sample info and resultant auto set Thresh. You are encouraged
      to use debug to see the eg the auto Thresh massaging in action, it may help to understand usage of the plugin. MS DebugView
      can also be used to view output from other plugins and programs that can also be useful.

    Ignore:=0.4, Percentage of darkest pixels to ignore during AutoThresh scan to detect minimum luma pixel of all sampled frames.
     (ignores a few extreme pixel values ie noise, as for Threshold arg in YPlaneMin).
     v1.05, changed default from 0.2% to 0.4%.

    Matrix:, RGB ONLY. For conversion of RGB to YUV-Y, 0 = Rec601, 1 = Rec709, 2 = PC601, 3 = PC709
      Default for RGB is:- If clip Width > 1100 OR clip Height > 600 Then 3(PC709) , else 2(PC601) : YUV not used
      The defaults are for PC601 & PC709 range 0-255.
      So as to not require different AutoThresh for RGB, if clip c is RGB AND matrix is PC Levels AND Thresh < 0.0 and ScaleAutoThreshRGB=true,
      then Thresh will be scaled to RGB full range ie Thresh = Thresh * (255.0/(235.0-16.0)) ONLY when AutoThresh (ie Thresh < 0.0,
      YPlaneMin relative).
      When +ve Thresh is explicitly supplied (Thresh > 0.0) it is not scaled and assumed to be already correct range TV or PC levels.
__________________
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 ???

Last edited by StainlessS; 7th February 2020 at 06:06. Reason: Update
StainlessS is offline   Reply With Quote
Old 13th October 2014, 01:07   #38  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
v1.13 Docs, part 2 of 2

Code:
    Baffle:=4, Number of scanlines (h/v) that must break threshold to be considered image (can avoid noise around frame edges).
      Does not usually need changing but might be of use to avoid some kind of eg teletext data at top of frame in broadcast video.

    ScaleAutoThreshRGB: bool default True. If true and RGB and Matrix at PC levels, and Thresh -ve (autothresh) then thresh will (after any
      auto Thresh massaging) be scaled to PC levels. By default, -ve Auto Thresh is considered to be at TV levels, and so will be scaled to
      to PC levels to match the matrix setting. If ScaleAutoThreshRGB is False Then autothresh is considered to be at PC levels and not scaled.

    ScaleAutoThreshYUV: bool default False. If true and YUV and Thresh -ve (autothresh) then Thresh will (after any auto Thresh massaging),
      be scaled to PC levels. By default, -ve Auto Thresh is considered to be at TV levels, this allows you to change that assumption when
      source clips are at PC levels. If supplying PC levels clip and PC levels autothresh then leave this setting at false (no scaling).
      The above seemingly awkward  settings are due to having to deal with YUV @ TV levels and RGB @ PC levels with the possibility of
      YUV @ PC levels.

    Cropmode: default=2 == CropMore. 1 = CropLess. Range 1 -> 2.
      1 (CropLess) crops a little less border if the exact cropping coords do not comply with XMod/YMod/WMod/HMod as
        described earlier. May leave a little border edge.
      2 Default, (CropMore) crops a little extra where exact coords do not comply XMod/YMod/WMod/HMod requirements.
        You may lose a little of the image edges.
      CropMode is applied AFTER any user edge adjustments via LeftAdd, TopAdd, RightAdd and BotAdd.

    Blank: Default False. If true, then Blanks the borders, ie sets border to RGB(0,0,0) or YUV(16,128,128) instead of cropping.
      Is overridden if Show == true.

    BlankPC: default false. If Blanking then blanks to YUV(0,128,128) instead of default YUV(16,128,128).

    Align: Default True. If true, then aligns frames in memory when cropping, for eg SSE2 16-byte alignment required by some
      filters, particularly smoothing filters (filters following RoboCrop). See Docs for Crop().
      Only Applies if Cropping, ie Blank==false AND Show==false.
      v1.11, changed Default to True, avoid Avs+ problems which can put up an error if False.

    Show: Default false. If true, then does no cropping, just shows a little info on frame. Overrides both Blank and Align.
      Final image edge positions shown as dotted lines every fifth pixel set white, always shown. Final image edge markers show edge
        after any User adjustment via Add args (LeftAdd, TopAdd, RightAdd, BotAdd), and also after Modn rounding applied (CropMore/CropLess).
      Exact image edges are show if not exactly coinciding with Final Image Edge markers, Exact image edge markers shown as every 3rd pixel
      plotted in white.
      Where the Skip args (LeftSkip, TopSkip, RighSkip, BotSkip) are non zero, will show skip positions as dotted lines with dots
        every other pixel, not plotted if exact same position at final Modn (CropMore/CropLess) position or detected exact edge position.
        The Skip args preset the 'already cropped area', ie auto cropping starts with edges already considered border.
      Added cross hair reticule when show=True. Larger markings are 10 pixels apart, dots are 5 pixels apart.
        Perhaps of use where borders not of fixed position.

    LogFn: Default "" (unset). Filename of Log file.
      Will output crop coords, crop coords will be output whether cropping or not (Blank/Show), format as within quotes below.

      '28 92 668 392 2 4 2 4 720 576 27 89 696 484 2 27 89 696 484 '

      Where in order:
        CropX CropY CropW CropH     :  Crop coords mod XMod, YMod, WMod, HMod.
        XMod YMod WMod HMod         :  As used for above crop coords
        Width Height                :  Original frame width and height
        ORG_X1 ORG_Y1 ORG_X2 ORG_Y2 :  Exact coords of found image, not rounded according to x/y/w/h mod (Before User Adjust)
        CropMode                    :  1 = CropLess, 2 = CropMore(default)
        X1 Y1 X2 Y2                 :  Coords after any User adjustments eg ORG_X1+LeftAdd etc and before applying XMod etc.
      All values output are single SPACE separated.


    LogAppend: Default false. If true then appends log to any existing log file.

    ATM: Float default 4.0 (0.5 -> 40.0). Silently limited to valid range.
      ATM allows user to set the DEFAULT_AUTOTHRESH massaging minimum. When eg samples = 1, then auto thresholding is of course quite
      unreliable and so auto Thresh would be 'massaged' to -ve(ATM), other values of Samples below 20 will likewise have auto thresh
      massaged but to a lesser degree, linearly between -ve(ATM) for Samples == 1 and -ve(40.0) for Samples == 20.
        Auto Thresh massaging also takes into account the frame range of samples (first sampled frame to last sampled frame inclusive)
      and this is mixed together with any samples massaging then applied to auto Thresh.
      Previous (Fixed) default for ATM was 0.5, for maximum safety so that a single Samples scan would NOT overcrop. The new ATM arg default
      of 4.0 is a less paranoid safety setting which should in most cases work well but with a very short clip or eg single image then
      user might be better off giving the minimum ATM of 0.5. An ATM of 40.0 will switch OFF default auto thresh massaging.
      So long as sample range is about 5000+ frames  and Samples at least 20(default 40), then there will be no auto thresh massaging and
      current default is unlikely to need changing, with very short clips or reduced Samples count, then you might want to reduce ATM, for
      maximum paranoia, set ATM=0.5 -> 1.0, especially in an app that processes single images. See Thresh.

    Start: Default Undefined. Start frame of scan area. Overrides Auto Intro credits skipping.
      For Auto Intro and End Credits Skipping to be set to 5% (of FrameCount for Intro Skipping) and 90% (for End Skipping), the number of
      frames between them must be greater or equal to 250 frames, and MUST also be greater than Samples, otherwise Auto skipping ignored and
      the Start and End frame numbers are set to 0 and Framecount - 1. If a user supplies eg a Start frame number ONLY, then End Skipping
      has to comply with the same conditions, range between End Skip frame and user supplied Start has to be at least 250 frames and greater
      than Samples, otherwise End frame set to FrameCount - 1.
       After either via Auto Credits skipping, or user supplied Start/End, or defaulted to 0 & FrameCount -1, we have a sample scan range.

    End: Default Undefined. End frame for scan area. Overrides Auto End credits skipping. 0 will be converted to Framecount - 1.
      See previous Start setting.

    Int LeftAdd, TopAdd, RightAdd, BotAdd, All default 0. Valid range depends upon clip dimensions, Skip and Baffle settings.
      User adjustments to Skip + Autocrop exact found coords. CropMode applied after user Add adjustments.

    Int LeftSkip, TopSkip, RightSkip, BotSkip, All default 0. TopSkip/BotSkip range 0 -> Height/4. LeftSkip/RightSkip range 0 -> Width/4.
    Minimum edge croppings, detection starts with these edges cropped already, and are applied whether RLBT flags (ie edge crop scanning)
    are applied or not. Avoid noise eg teletext at top of frame of VHS gunk at bottom.
    NOTE, The Skip and Add args eg LeftSkip and LeftAdd are processed irrespective of the relevant RLBT flags so if you just wanted to
    autocrop top and botton then set RLBT=$03 and can set either LeftSkip = 16 OR LeftAdd=16 to manually crop 16 pixels from Left hand
    Side, DO NOT SET BOTH are this would crop off 32 pixels. LeftSkip is applied before autocrop, and LeftAdd after autocrop, and then
    results are rounded to WMOD:HMOD, dependent upon cropmode (Default CROPMORE).

    Float ScanPerc, Default 49.0, Range 1.0->99.0. Percentage of clip dimensions to scan for border edges.
      Default 49.0%, Starts scan from nearly the middle of frame to outer edge of frame looking for borders.
      Specialist use, might use eg 99.0% when image wholly to one of other side of the middle of frame.
      eg, when 99.0, starts scan for TOP edge at nearly bottom of frame, scanning upwards.
                     starts scan for BOT edge at nearly top of frame, scanning downwards.
                     starts scan for LFT edge at nearly RHS of frame, scanning leftwards.
                     starts scan for RGT edge at nearly LHS of frame, scanning rightwards.

    String Prefix,   Default "ROBOCROP_". Prefix for Local vars set by the filter, crop coordinates. Setting to "" disables Local vars.
                     With Prefix="ROBOCROP_" (Default)
                         ROBOCROP_X  = X coord
                         ROBOCROP_Y  = Y coord
                         ROBOCROP_W  = +ve Width
                         ROBOCROP_H  = +ve Height
                         ROBOCROP_W2 = -ve Width relative crop coord
                         ROBOCROP_H2 = -ve Height relative crop coord

                   Example use:
                    <<<<<<<<< CODE START <<<<<<<
                        BlankClip(Length=1,width=1024,height=768,Pixel_type="YV12")
                        Wid=Width
                        Hit=Height
                        BLK=Last.BlankClip(width=320,height=240,color=$FF00FF)
                        OverLay(BLK,x=680,y=416)
                        RoboCrop(ScanPerc=99,show=true,debug=true,Prefix="ROBOCROP_")
                        X=ROBOCROP_X  # Get Local Vars as set by RoboCrop (Using Prefix, above using Prefix same as Default Prefix)
                        Y=ROBOCROP_Y
                        W=ROBOCROP_W
                        H=ROBOCROP_H
                        W2=ROBOCROP_W2
                        H2=ROBOCROP_H2
                        Subtitle("Source: Width="+String(Wid)+",Height="+String(Hit),Y=4)
                        Subtitle("Crop("+String(X)+","+String(Y)+","+String(W)+","+String(H)+")",Y=24)
                        Subtitle("Crop("+String(X)+","+String(Y)+","+String(W2)+","+String(H2)+")",Y=44)
                        Return Last
                    >>>>>>>>>> CODE END >>>>>>>





Cropping will likely fail on END CREDITS ONLY clips, where on black background, and will probably crop off the sides that are no
different in average luma to any letterbox borders, if you cannot see the borders, then neither can RoboCrop(), even setting the
auto Thresh to eg -1.0 or 0.0 is quite likely to fail. (See RLBT edge bitflags).

If cropping too much border, then increase Samples or reduce Thresh or lower ATM if short clip.
If not cropping enough border then border is being seen as image, increase Thresh (for -ve Thresh , make more -ve).

 To speed up, you may want to leave Auto-Thresh alone and reduce samples, but there is danger that it will not detect all borders (overcrop).
Suggest you do not go below Samples=20, although early default for samples was 12, we use a paranoid setting of 40 by default.
However, RoboCrop is quite sprightly and you will probably not need to reduce Samples, but if you are interested in how long it takes to
do it's auto thresh scanning in the filter constructor, the time taken is output via the debug arg to DebugView. Clips that have no letter
boxing are quickest dealt with and those with largest borders take most time as it has to scan the borders of all Samples frames, looking for
bigger image. Doing a short test as I write this on a 10 mins 12 secs PAL DVD vob of Cabaret, it took 0.875secs where
borders = Crop(30,90,-24,-92) with default args except for Debug=true (RoboCrop v1.03, YV12, Core Duo, Duel Core 2.14Ghz, Sata 2).
NOTE, scans over entire range of clip and so clip must be seekable, ie not eg DIVX with only a single keyframe, would take nearly forever.

NOTE, The plugin AutoCrop() uses a Thresh of 40.0 and samples == 5 by default (No AutoThresh), but the base logic is not too dissimilar.

Final NOTE, use arg Laced=False if you always process progressive or deinterlaced, And ATM set between 0.5 and 4.0 if very short
clips/single-image.

StainlessS
__________________
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 ???

Last edited by StainlessS; 7th February 2020 at 06:07. Reason: Update
StainlessS is offline   Reply With Quote
Old 25th February 2015, 15:37   #39  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
RoboCrop new version v1.12. See 1st post. 1st post has old version of docs
(too big for 16KB post limit, see post #37 [2 posts ahead] for current docs over two posts).

Code:
	v0.20, Changed, range massage switch on frames to below 1500 (from 1000).
	v0.21, Autothresh Massaging changed minimum to -1.5 from -0.5.
	v1.00, Added ATM arg.
	v1.02, Added Start & End args, Changed default rec709 switch to width > 1100 || height > 600.
	v1.03, Minor mods.
	v1.04, Added User adjustments to detected border edges.
	v1.05, Addef LeftSkip, RightSkip, TopSkip, BotSkip (also shown when Show). Changed default Ignore from 0.2 to 0.4.
	v1.06, Changed Default WMod to 4, avoid possible problems in Avisynth v2.58, some media players and VDubMod.
		   Changed Default AutoThresh to -40.0, been wanting to do this for some time.
		   Changed default Samples to 40, paranoia.
	v1.07, Changed to recognise AutoThresh of both -32.0 and -40.0 as DEFAULT AUTOTHRESH (both old and new version args).
	v1.08, wmod,hmod limited max 16. Fixed crop centering.
	v1.09, Added reticule when Show=true..
	v1.10, Added Exact line marker when show.
	v1.11, 07 Jan  2019. Added Version Resource, Move to VS2008, Added x64, Changed default Align=True.
	v1.12, 06 Feb  2020. Added ScanPerc arg.
@ FredThompson, TopSkip, should assist with your morse code gunk.

Code:
   Int LeftSkip, TopSkip, RightSkip, BotSkip, All default 0. Minimum edge croppings, detection starts with these edges cropped already,
    avoid noise eg teletext at top of frame or VHS gunk at bottom.
__________________
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 ???

Last edited by StainlessS; 6th February 2020 at 19:12.
StainlessS is offline   Reply With Quote
Old 22nd April 2015, 03:30   #40  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 9,365
RoboCrop new version v1.06. See 1st post. 1st post has old version of docs
(too big for 16KB post limit, see post #37 for current docs over two posts).

Code:
    v1.05, Added LeftSkip, RightSkip, TopSkip, BotSkip (also shown when Show). Changed default Ignore from 0.2 to 0.4.
    v1.06, Changed Default WMod to 4, avoid possible problems in Avisynth v2.58, some media players and VDubMod.
           Changed Default AutoThresh to -40.0, been wanting to do this for some time.
           Changed default Samples to 40, paranoia.
Main changes

Code:
   Samples=40, Number of frames to sample from source clip c. v1.06 changed default from 32 to 40.
    As an observation, most clips have good border recogition within the 1st 2 or 3 sampled frames using the default -40.0 AUTOTHRESH
    although have noticed some dark clips that required ~8 samples (maybe more) for full recognition @ default Thresh = -40.0
    We use a default Samples=40, because we are intrinsically paranoid.
      If number of frames between frame at 5% of framecount and frame at 90% of framecount is greater than 250 and is also greater
    than Samples, will ignore the first 5% and last 10% of frames when both auto-thresholding and crop sampling to try to negate
    effects of artificial black in titles and end credits. Can override the Auto Credits skipping by setting Start and/or End frame
    of the range to sample.
      Samples = 0, will be converted to Samples = FrameCount - 1, ie auto credits skipping disabled  and ALL FRAMES SAMPLED,
    of use for very short scenes, not for general full movie clips.
    Set eg Samples = Int(FrameCount * 2.0 / 100.0 + 0.5) to sample 2.0% of frames in clip.

   Thresh: Default= -40.0 (==DEFAULT AUTOTHRESH, any -ve (or 0) Thresh is AUTOTHRESH where Thresh adjustments are automatic).
    v1.06, Changed DEFAULT AUTOTHRESH from -32.0 to -40.0.

    Thresh > 0: (Explicit Threshold)
      A user supplied +ve Thresh should be at correct TV/PC levels for the the clip being worked on ie 16->235 for TV levels and
      0->255 for PC Levels (RGB, as appropriate for matrix being used).

    Thresh <= 0: (AUTOTHRESH)
      When Thresh <= 0, the clip will be sampled over Samples frames to find the minimum YPlaneMin (using Matrix if RGB) which
      we will call MINLUMA and an Explicit Threshold calculated by adding MINLUMA to abs(Thresh), after that it is processed
      as for Thresh > 0: (Explicit Threshold) as noted above, but, before adding MINLUMA, some AUTOTHRESH massaging and scaling occurs.

      Here AUTOTHRESH Thresh massaging and scaling occurs in sequence:-
      1 ) if (Thresh == DEFAULT AUTOTHRESH && ATM < 40.0) (DEFAULT AUTOTHRESH = exactly -40.0, defaulted OR user supplied):
            Let sampstart and sampend, be starting and ending frames numbers after any Auto Credits skipping and/or user set Start or End.
            Let Samples be limited to sampend-sampstart+1.
            Let SampRange (Sample Range) = SampEnd-SampStart+1.
            samples_massage =(Samples>=20)           ? 1.0 : (Samples-1)   * (1.0/(20-1))           # No massaging if Samples >= 20
            range_massage   =(SampRange >= (250*20)) ? 1.0 : (SampRange-1) * (1.0/((250*20)-1))     # No massaging if SampRange >= 5000
             Both samples_massage and range_massage will be in range 0.0 to 1.0.
             Thresh = -(((samples_massage * range_massage) * (40.0 - ATM)) + ATM)
              This adjustment to Auto Thresh is to reduce the possibility of overcropping on eg a dark low 'Samples' clip, or where
              source SampRange (ie temporal frame set) is too small to take a reliable sample from.
              Resulting massaged Thresh will range between -ATM and -40.0.
              Although massaging is intended to reduce overcropping, it could result in not cropping enough border (less disastrous),
              its a bit of a balancing act really. See also ATM.
      2 ) If RGB AND PC matrix(default) AND ScaleAutoThreshRGB==True(default) then
            Thresh= Thresh*(255.0/(235-16))
      3 ) If YUV AND ScaleAutoThreshYUV==True(default=false) then
            Thresh= Thresh*(255.0/(235-16))

      Steps 2) and 3) above, by default treat a -ve AUTOTHRESH as being @ TV Levels and so Scale RGB Thresh to PC levels but not YUV.
      If you want to supply a PC levels AUTOTHRESH Thresh for RGB, then simply set ScaleAutoThreshRGB=false to inhibit scaling.
      Note, if a TV levels Matrix is supplied for RGB, then scaling will always be inhibited.
       If your clip is YUV at PC levels and you want to use eg DEFAULT AUTOTHRESH (-40.0, which is considered to be @ TV levels),
      then set ScaleAutoThreshYUV=True to enable Thresh scaling.
       If your clip is YUV at PC levels and you want to use a PC levels AUTOTHRESH (-ve) then leave ScaleAutoThreshYUV at default false
      which does not scale Thresh.
      After any scaling, MINLUMA is then added to abs(Thresh) and processed as for +ve Explicit Threshold as noted above.
      NOTE, Above RoboCrop step 1) 'massages' DEFAULT AUTOTHRESH (exactly -40.0) if low samples count or if short clip. Reason being to
       avoid overcropping when insufficient data available for reliable cropping. It is considered better to not crop enough or at all,
       than to overcrop. You can override by simply setting an explicit threshold (+ve) of eg 40.0, or setting a NON-DEFAULT auto thresh
       (-ve) eg -16.0 or -40.1, where YPlaneMin is established for the sampled frames and then abs(thresh) is added to that value which
       is then used as an explicit thresh.
Code:
   WMod:, Default=Max(XMOD,4), Where XMOD is the natural chroma cropping restriction of the colorspace concerned, eg 2 for YV12.
       WMod MUST be a multiple of internal XMOD as described above, or it will throw an error.
         v1.06, Changed default from XMOD to Max(XMOD,4), this is for several reasons, some encoders, media players and VDubMod
       demand WMOD==4 ie width an exact multiple of 4 (some Mpeg encoders may demand WMOD=16 which you would have to set yourself).
       In addition to above, Avisynth v2.58 kicks up a fuss if any YUV colorspace clip with Width not an exact multiple of 4 is
       returned as final result clip (intermediate clips only have to comply with colorspace XMOD requirment). It is not really
       the job of any plugin to guess whether it's result will be the final return clip and so is not really for RoboCrop to
       enforce WMOD=4 for eg YV12, BUT, combined with the other reasons above, it was decided to change default WMOD to Max(XMOD,4),
       you will have to set eg WMOD=2 manually if required for eg YV12 or YUY2, or WMOD=1 for eg RGB32 if that is what you want.
       Avisynth has no problem returning eg RGB32 with an odd width, but at least one player had problems when RGB32 was WMOD=2
       about 12 months prior to writing this (now fixed). WMOD set to 4 [as Max(XMOD,4) will likely be] will be least problematic
       choice but you know what you require and can set WMOD to suit.
EDIT:
The Max() bit above in Magenta is just in case some future supported Planar format has requirement greater than 4.

Code:
Function RoboCrop(clip c,int "Samples"=40,Float "Thresh"=-40.0,bool "Laced"=true,int "WMod",int "HMod",int "RLBT"=15,bool "Debug"=false, \
    float "Ignore"=0.4,int "Matrix"=(c.Width>1100||c.Height>600?3:2), int "Baffle"=4, bool "ScaleAutoThreshRGB"=true,
    bool "ScaleAutoThreshYUV"=false, int "CropMode"=2,bool "Blank"=false,bool "BlankPC"=false,bool "Align"=false,bool "Show"=false, \
    String "LogFn"="",bool "LogAppend"=false, Float "ATM"=4.0,int "Start"=Undefined,Int "End"=Undefined, \
    Int "LeftAdd"=0,Int "TopAdd"=0,Int "RightAdd"=0,Int "BotAdd"=0, \
    Int "LeftSkip"=0,Int "TopSkip"=0,Int "RightSkip"=0,Int "BotSkip"=0)
Laced=True,Show = true
__________________
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 ???

Last edited by StainlessS; 16th July 2017 at 00:08. Reason: Additional
StainlessS is offline   Reply With Quote
Reply

Tags
autocrop, crop

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 13:34.


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