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 Development

Reply
 
Thread Tools Search this Thread Display Modes
Old 10th March 2016, 05:15   #21  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
I'm wondering that maybe v2.6MT behaves a little differently (apart from the obvious), anyway I noticed that I
added an arg to ScriptClip in current DBSC and perhaps it might cure the problem in version you have.

Code:
RT_DebugF("InfoDB=%s\nScanDB=%s\nScriptClip Script=\n%s",InfoDB,SCanDB,Script,name=myName)                                
                Last.ScriptClip(Script,Args="InfoDB,ScanDB,FMT,FMT2,SceneCnt,STARTCLIP,ENDCLIP,SINGLECLIP,OVR,DupTh,ChromaWeight",Local=True)
            } Else {
RT_DebugF("ScanDB=%s\nScriptClip SUBS_Script=\n%s",SCanDB,SUBS_Script,name=myName)                                
                Last.ScriptClip(SUBS_Script,Args="ScanDB,STARTCLIP,ENDCLIP,SINGLECLIP",Local=True)
Supposed to cure a bug in Avisynth, where variables can interfere with each other, but still dont know if could be cause.
Perhaps you could add fix to your version DBSC and retry (no need to re-create DBases.)

Anyway, whether works or not here is current version with a Beta of v2 RT_Stats, no additional docs (v2.6 only).

Best of luck, hope it works ok.

EDIT: Must re-create DBases, different format for v2 RT, also supports greater than 2GB Array/DBase.

EDIT: Oops, and here the link:- http://www.mediafire.com/download/5v.../DBSCv0.6B.zip
__________________
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; 10th March 2016 at 05:18.
StainlessS is offline   Reply With Quote
Old 15th March 2016, 19:02   #22  |  Link
bcn_246
Registered User
 
bcn_246's Avatar
 
Join Date: Nov 2005
Location: UK
Posts: 117
Thanks again for all the hard work, same error though
Code:
00000001	0.00000000	[4724] TffdshowBase::Constructor	
00000002	0.00139088	[4724] TffdshowDecVideo::Constructor	
00000003	0.00142574	[4724] TffdshowDecVideoOutputPin::Constructor	
00000004	0.05437928	[4724] TffdshowDecVideo::Destructor	
00000005	0.05556829	[4724] TffdshowDecVideoOutputPin::Destructor	
00000006	7.66806078	[4724] RemoveDirt 1.0	
00000007	9.64088249	[4724] SSETools 0.1	
00000008	10.84836483	[4724] DBSC_CreateInfo: DBSC_CreateInfo:  InfoDB does NOT exist	
00000009	10.84837818	[4724] DBSC_CreateInfo: 'input.avi_Info.DB'	
00000010	10.84884453	[4724] DBSC_CreateInfo: Initializing INFO DBase C:\edit\input.avi_Info.DB	
00000011	11.40705109	[4724] DBSC_CreateInfo: 100 ] 5% Complete	
00000012	11.92880726	[4724] DBSC_CreateInfo: 200 ] 10% Complete	
00000013	12.47432137	[4724] DBSC_CreateInfo: 300 ] 15% Complete	
00000014	13.00868320	[4724] DBSC_CreateInfo: 400 ] 20% Complete	
00000015	13.52539349	[4724] DBSC_CreateInfo: 500 ] 25% Complete	
00000016	14.05308437	[4724] DBSC_CreateInfo: 600 ] 30% Complete	
00000017	14.58929062	[4724] DBSC_CreateInfo: 700 ] 35% Complete	
00000018	15.11684227	[4724] DBSC_CreateInfo: 800 ] 40% Complete	
00000019	15.64067173	[4724] DBSC_CreateInfo: 900 ] 45% Complete	
00000020	16.16324425	[4724] DBSC_CreateInfo: 1000 ] 50% Complete	
00000021	16.69487953	[4724] DBSC_CreateInfo: 1100 ] 55% Complete	
00000022	17.20796013	[4724] DBSC_CreateInfo: 1200 ] 60% Complete	
00000023	17.74340820	[4724] DBSC_CreateInfo: 1300 ] 65% Complete	
00000024	18.27809906	[4724] DBSC_CreateInfo: 1400 ] 70% Complete	
00000025	18.81997108	[4724] DBSC_CreateInfo: 1500 ] 75% Complete	
00000026	19.36166382	[4724] DBSC_CreateInfo: 1600 ] 80% Complete	
00000027	19.89013100	[4724] DBSC_CreateInfo: 1700 ] 85% Complete	
00000028	20.42737961	[4724] DBSC_CreateInfo: 1800 ] 90% Complete	
00000029	20.94775581	[4724] DBSC_CreateInfo: 1900 ] 95% Complete	
00000030	21.48851967	[4724] DBSC_CreateInfo: Total Time taken = 10.66 Seconds (0.18 Mins)	
00000031	21.54249573	[4724] DBSC_Scan: DBSC_Scan:  ScanDB does NOT exist	
00000032	21.54251099	[4724] DBSC_Scan: 'input.avi_Scan.DB'	
00000033	21.54333878	[4724] DBSC_Scan: Initializing Scenechange Scan DBase C:\edit\input.avi_Scan.DB	
00000034	21.54419136	[4724] DBSC_Scan: Deleting Existing logs	
00000035	21.54808807	[4724] DBSC_Scan: Creating Scan DBase	
00000036	24.71230888	[4724] DBSC_Scan: ReScan for Fade-to-Black SceneChanges:	
00000037	24.82045364	[4724] DBSC_Scan: Writing Full SceneChange DBase Data	
00000038	25.41054726	[4724] DBSC_Scan: Total Time taken = 3.92 Seconds  (0.07 Mins)	
00000039	25.54019165	[4724] DBSC_WriteFiles: Writing Start_Fn File '~20160315_175830_505_Start.txt'	
00000040	25.54027939	[4724] DBSC_WriteFiles: Writing End_Fn File '~20160315_175830_505_End.txt'	
00000041	25.64020538	[4724] DBSC_WriteFiles: Total Time taken = 0.14 Seconds  (0.00 Mins)
bcn_246 is offline   Reply With Quote
Old 16th March 2016, 12:10   #23  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Sorry bcn, I'm completely stumped.
Can you post TEM.Log please.

EDIT: Can you also amend SubsClip source as below (additions in BLUE)

Code:
    Met1 = """
        iex = RT_VarExist("InfoDB")
        eex = (iex && Exist(InfoDB))
        RT_DebugF("iex=%s eex=%s InfoDB='%s'",iex,eex,iex?InfoDB:"",name="InfoDBTest: ")
    
        SOS     = RT_DBaseGetField(ScanDB,n,0)
        EOS     = RT_DBaseGetField(ScanDB,n,1)
and at end of the function

Code:
    """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
Should output something like this

Code:
00000008	11:03:30	InfoDBTest: About to call ScriptClip InfoDB='D:\DBSC\I.avi_Info.DB'	
00000009	11:03:30	InfoDBTest: Args='InfoDB,ScanDB,STARTCLIP,ENDCLIP,SINGLECLIP,FMT,FMT2,SceneCnt,OVR,dFact,dMinim,dMinLen,oCorr,fCorr,
                        fFrames,DupTh,Matrix,Thresh,ChromaWeight'	
00000010	11:03:30	InfoDBTest: iex=True eex=True InfoDB='D:\DBSC\I.avi_Info.DB'
EDIT: CAll as so
Code:
# MaxCrop_Client.avs

Import("DBSC.avs")

#VideoFileName = "I.avi"
VideoFileName = "Input.avi"

InfoDB        = VideoFileName+"_Info.DB"                                              # INFO DBase
ScanDB        = VideoFileName+"_Scan.DB"                                              # SCAN DBase
LogFn         = VideoFileName+"_User.Log"
SpliceDB      = VideoFileName+"_Splice.DB"

RECYCLE_INFO_DB= True
RECYCLE_SCAN_DB= True
OVERRIDE = "Override.txt"              # Override as Filename
#FUNC = "DBSC_AutoContrast(SpliceDB=SpliceDB,SceneNo=SceneNo,Show=True)"  
FUNC = "DBSC_MaxCrop(SpliceDB=SpliceDB,SceneNo=SceneNo)"  

# Scene change detection
dFact  = 2.0             # lower more sensitive
dMinim = 4.0             # lower more sensitive
dMinLen= 12              # Least number of frames in scene


Avisource(VideoFileName)

DBSC_CreateInfo(InfoDB,RecycleDB=RECYCLE_INFO_DB)                                               # Create INFO DB (REQUIRED), for fast scanning
DBSC_Scan(InfoDB,ScanDB,RecycleDB=RECYCLE_SCAN_DB,dfact=dFact,dMinim=dMinim,dminlen=dMinLen)    # Detect Scene Changes and store in ScanDB 

#DBSC_Override(ScanDB,OVERRIDE)                                                     # Only if required (Probably NOT necessary) 

#Return DBSC_StackSceneChanges(Last,InfoDB,ScanDB).ConvertToRGB32                   # Check detections START/END of scene STACKED.



# VIEW SCene Changes Before DBSC_DynaCrop 
Return DBSC_SubsClip(InfoDB,ScanDB,Subs=True,Metrics=True,Metrics2=True)           # View detection metrics
__________________
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 March 2016 at 12:16.
StainlessS is offline   Reply With Quote
Old 16th March 2016, 14:47   #24  |  Link
bcn_246
Registered User
 
bcn_246's Avatar
 
Join Date: Nov 2005
Location: UK
Posts: 117
Hey, cheers mate. As I am sure you can tell I am no scripter... I wasn't sure where to put the Met1 =, so I just have just put it after the input clip call). So far the script now looks like so:
Code:
# MaxCrop_Client.avs

Import("DBSC.avs")

#VideoFileName = "I.avi"
VideoFileName = "Input.avi"

    Met1 = """
        iex = RT_VarExist("InfoDB")
        eex = (iex && Exist(InfoDB))
        RT_DebugF("iex=%s eex=%s InfoDB='%s'",iex,eex,iex?InfoDB:"",name="InfoDBTest: ")
    
        SOS     = RT_DBaseGetField(ScanDB,n,0)
        EOS     = RT_DBaseGetField(ScanDB,n,1)
		
InfoDB        = VideoFileName+"_Info.DB"                                              # INFO DBase
ScanDB        = VideoFileName+"_Scan.DB"                                              # SCAN DBase
LogFn         = VideoFileName+"_User.Log"
SpliceDB      = VideoFileName+"_Splice.DB"

RECYCLE_INFO_DB= True
RECYCLE_SCAN_DB= True
OVERRIDE = "Override.txt"              # Override as Filename
#FUNC = "DBSC_AutoContrast(SpliceDB=SpliceDB,SceneNo=SceneNo,Show=True)"  
FUNC = "DBSC_MaxCrop(SpliceDB=SpliceDB,SceneNo=SceneNo)"  

# Scene change detection
dFact  = 2.0             # lower more sensitive
dMinim = 4.0             # lower more sensitive
dMinLen= 12              # Least number of frames in scene


Avisource(VideoFileName)

DBSC_CreateInfo(InfoDB,RecycleDB=RECYCLE_INFO_DB)                                               # Create INFO DB (REQUIRED), for fast scanning
DBSC_Scan(InfoDB,ScanDB,RecycleDB=RECYCLE_SCAN_DB,dfact=dFact,dMinim=dMinim,dminlen=dMinLen)    # Detect Scene Changes and store in ScanDB 

#DBSC_Override(ScanDB,OVERRIDE)                                                     # Only if required (Probably NOT necessary) 

#Return DBSC_StackSceneChanges(Last,InfoDB,ScanDB).ConvertToRGB32                   # Check detections START/END of scene STACKED.



# VIEW SCene Changes Before DBSC_DynaCrop 
Return DBSC_SubsClip(InfoDB,ScanDB,Subs=True,Metrics=True,Metrics2=True)           # View detection metrics

###
### DynaCrop args
###

# Edges to crop:  RLBT, Default 15($F). bit flags of edges to crop. 1=Top, 2=Bot, 4=Left, 8=Right. (1+2+4+8=15 = all sides) 
RLBT=$F                                                                            # Left and Right, TOP and BOT
# RoboCrop Thresh, -40 = current Robocrop AutoThresh : -32 = Older version RoboCrop AutoThresh
CropThresh= -40  # Current ver AutoThresh
# Maximum amount to crop that is OVER AND ABOVE least amount of cropping for entire clip. (ie is trial RoboCropped prior to Dynamic cropping) 
CropLimit_Left = 8 
CropLimit_Top  = 8 
CropLimit_Right= 8
CropLimit_Bot  = 8



  # Return one of two below funcs, DBSC_DynaCrop MUST have been called (at some time) before DBSC_DynaSplice (THEN COMMENT OUT) 
Return DBSC_DynaCrop(ScanDB,SpliceDB=SpliceDB,rlbt=RLBT,LogFn=LogFn,CropLimit_Left=CropLimit_Left,CropLimit_Top=CropLimit_Top,Show=True,CropThresh=CropThresh,CropLimit_Right=CropLimit_Right,CropLimit_Bot=CropLimit_Bot,Debug=True)
  # *** COMMENT OUT ABOVE DBSC_DynaCrop line after DBSC_DynaCrop creates SpliceDB ***

DBSC_DynaSplice(SpliceDB,Func)                                                      # See clip or DebugView for results
Return Last   # *** This is YOUR REAL RESULT *** 

DBSC_SubsClip(InfoDB,ScanDB,Subs=True,Metrics=true,Metrics2=False)
Return Last   # Or Result with Scene Change detection Metrics

Function DBSC_MaxCrop(clip c,String "SpliceDB",Int "SceneNo" ) {
/*
    Call DBSC_DynaSplice with eg
        FUNC = "DBSC_MaxCrop(SpliceDB=SpliceDB,SceneNo=SceneNo)"  
        DBSC_DynaSplice(c,SpliceDB,func=FUNC)

    DB Fields.
     FieldNumber  Type     Contents
     0             Int     Start of Scene frame              
     1             Int     End of Scene frame
     2             Int     Input clip Width  (same for all DB).
     3             Int     Input clip Height (same for all DB).
     4             Int     Output clip resize Width  (same for all DB).
     5             Int     Output clip resize Height (same for all DB).
     6             Int     Scene Crop left (X) offset
     7             Int     Scene Crop top  (Y) offset
     8             Int     Scene Abs Crop Width
     9             Int     Scene Abs Crop Heigth
     10            Int     Scene signed crop width  (width relative)
     11            Int     Scene signed crop height (height relative)
     12            String  Resizer String (256 chars], Same for all DB
*/
    c
    myName="DBSC_MaxCrop: "
    Valid = (SpliceDB!="" && SceneNo>= 0)                            # Basic Validity test
    Assert(Valid,RT_String("%sMUST Supply SpliceDB and SceneNo",myName))    
    Global Glb_DBSC_MaxCrop_X = RT_VarExist("Glb_DBSC_MaxCrop_X") ? Glb_DBSC_MaxCrop_X : 0      # Initialize Globals on first use
    Global Glb_DBSC_MaxCrop_Y = RT_VarExist("Glb_DBSC_MaxCrop_Y") ? Glb_DBSC_MaxCrop_Y : 0
    Global Glb_DBSC_MaxCrop_W = RT_VarExist("Glb_DBSC_MaxCrop_W") ? Glb_DBSC_MaxCrop_W : 0
    Global Glb_DBSC_MaxCrop_H = RT_VarExist("Glb_DBSC_MaxCrop_H") ? Glb_DBSC_MaxCrop_H : 0
    GScript("""
        Assert(RT_DBaseGetID(SpliceDB,0)==DBSC_Str2ID("DYNS"),RT_String("%sNot a SpliceDB\n%s",myName,SpliceDB))
        S   = RT_DBaseGetField(SpliceDB,SceneNo,0)                   # SpliceDB Start Of Scene frame (0 relative)
        E   = RT_DBaseGetField(SpliceDB,SceneNo,1)                   # SpliceDB End Of Scene frame (0 relative)
        Length = E-S+1                                               # Length of scene
        X = RT_DBaseGetField(SpliceDB,SceneNo,6)                     # Curr Left Crop
        Y = RT_DBaseGetField(SpliceDB,SceneNo,7)                     # Curr Top Crop
        W = RT_DBaseGetField(SpliceDB,SceneNo,10)                    # Curr W Crop (Signed ie Right edge relative)
        H = RT_DBaseGetField(SpliceDB,SceneNo,11)                    # Curr H Crop (Signed ie bot edge relative)
        Global Glb_DBSC_MaxCrop_X = Max(Glb_DBSC_MaxCrop_X,X)
        Global Glb_DBSC_MaxCrop_Y = Max(Glb_DBSC_MaxCrop_Y,Y)
        Global Glb_DBSC_MaxCrop_W = Min(Glb_DBSC_MaxCrop_W,W)
        Global Glb_DBSC_MaxCrop_H = Min(Glb_DBSC_MaxCrop_H,H)
        RT_DebugF("#%d S=%d E=%d Len=%d : X=%d Y=%d W=%d H=%d : MxX=%d MxY=%d MxW=%d MxH=%d",
            \ SceneNo,S,E,Length,  X,Y,W,H,  Glb_DBSC_MaxCrop_X,Glb_DBSC_MaxCrop_Y,Glb_DBSC_MaxCrop_W,Glb_DBSC_MaxCrop_H,name=myName)
        RT_Subtitle("#%d S=%d E=%d Len=%d\nX=%d Y=%d W=%d H=%d\nMxX=%d MxY=%d MxW=%d MxH=%d",
            \ SceneNo,S,E,Length,  X,Y,W,H,  Glb_DBSC_MaxCrop_X,Glb_DBSC_MaxCrop_Y,Glb_DBSC_MaxCrop_W,Glb_DBSC_MaxCrop_H,align=2)
    """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
I am sure I have edited something wrong, as I am now getting the following on attempting to open the file...
bcn_246 is offline   Reply With Quote
Old 16th March 2016, 17:22   #25  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Hehe, not there old chum.

Sorry I should have said, in the SubsClip function in DBSC.avs, (search 'Met1').

PS, well actually I did say SubsClip, ie

Quote:
Can you also amend SubsClip source as below (additions in BLUE)
and also add the 2nd bit as the end of the SubsClip function.
__________________
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 22nd March 2016, 17:32   #26  |  Link
bcn_246
Registered User
 
bcn_246's Avatar
 
Join Date: Nov 2005
Location: UK
Posts: 117
Tried making the edits to DBSC.avs... the video is loading as before but the error number is now [(GScript], line 22), previously it was [(GScript], line 18). Also, while there were two different frames from the video stacked vertically, now there is just a single one.



If you could check I have made the changes correctly and am not just being dim that would be great!

MaxCrop_Client.avs (edited)
https://paste2.org/vCvBp9IN

DBSC.avs (edited)
https://paste2.org/nHCcOVA5

Last edited by bcn_246; 23rd March 2016 at 14:31. Reason: Re-edited .avs files
bcn_246 is offline   Reply With Quote
Old 23rd March 2016, 06:15   #27  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
You missed out this bit from end of SubsClip function,

Code:
   """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
But what I wanted to see was the debug output, ie just the relevant lines ie (lines Starting with "InfoDBTest:")

this
Code:
RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
and this
Code:
        iex = RT_VarExist("InfoDB")
        eex = (iex && Exist(InfoDB))
        RT_DebugF("iex=%s eex=%s InfoDB='%s'",iex,eex,iex?InfoDB:"",name="InfoDBTest: ")
__________________
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; 23rd March 2016 at 06:18.
StainlessS is offline   Reply With Quote
Old 23rd March 2016, 14:21   #28  |  Link
bcn_246
Registered User
 
bcn_246's Avatar
 
Join Date: Nov 2005
Location: UK
Posts: 117
Honestly I am a bit confused... I checked again and I think I have put the
Code:
   """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
section at the end of the DBSC_SubsClip function (in DBSC.avs), replacing the original
Code:
    """)
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
bcn_246 is offline   Reply With Quote
Old 23rd March 2016, 20:07   #29  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Sorry, can't explain that, was sure that was missing when I checked earlier.
Anyway, what was the output ?
__________________
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 March 2016, 12:12   #30  |  Link
slavanap
Registered User
 
slavanap's Avatar
 
Join Date: May 2011
Location: Moscow, Russia
Posts: 124
Hey, bcn_246

You can try this out: http://sendfile.su/1217836
It's my old development to detect crops for 3D videos, I can compile it once more later, if needed.
It detects crop for every 20 frames, and picks the minimum one.

Usage with Avisynth:
Code:
LoadPlugin("cropdetect.dll")
CropDetect(leftviewclip, rightviewclip, "sample.crop")
You can set leftviewclip = rightviewclip = yoursourcevideo to make it work right now. Open this clip (with VirtualDub, for example) and wait till it render something.


The generated .crop file usage:
create another .avs with similar contents
Code:
FFMpegSource2("sample.mkv")
Import("sample.crop")
That's it. As the output you'll get properly cropped video.
slavanap is offline   Reply With Quote
Old 24th March 2016, 20:48   #31  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Slavanap,

Quote:
It detects crop for every 20 frames, and picks the minimum one
bcn_246 want Maximum crop ie chop off all borders down to max, minimum frame left.

AutoCrop, or RoboCrop select minimum amount of borders to crop, there may be sections that still have a little border, bcn want rid of all borders
leaving no borders whatsoever.

Are you saying that your script does as bcn requires ?

EDIT: Also, tell bcn which button to click on (I picked one of them and it did not work, my Russian aint great).
__________________
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 March 2016 at 20:50.
StainlessS is offline   Reply With Quote
Old 25th March 2016, 00:16   #32  |  Link
slavanap
Registered User
 
slavanap's Avatar
 
Join Date: May 2011
Location: Moscow, Russia
Posts: 124
Okey, I recompiled my old plugin with conversion from MSVS 2008 to MSVS 2013.

Here you can find it: <obsolete link removed>

And I mistook about 20 frames value. The plugin does not pick every 20 frames, it picks only 20 frames uniformly distributed over whole video. Detection process will be pretty fast.

Quote:
Originally Posted by StainlessS View Post
bcn_246 want Maximum crop ie chop off all borders down to max, minimum frame left.
Well, in this case you can play with threshold value. The higher value will crop more. I suggest something like 100 or 200 instead default 24.

Quote:
Originally Posted by StainlessS View Post
AutoCrop, or RoboCrop select minimum amount of borders to crop, there may be sections that still have a little border, bcn want rid of all borders
leaving no borders whatsoever.

Are you saying that your script does as bcn requires ?
Got it. Fixed it with adding threshold parameter.

Last edited by slavanap; 25th March 2016 at 17:26. Reason: obsolete link removed
slavanap is offline   Reply With Quote
Old 25th March 2016, 01:25   #33  |  Link
slavanap
Registered User
 
slavanap's Avatar
 
Join Date: May 2011
Location: Moscow, Russia
Posts: 124
I made dumb bug in previous release.
Here's fixed one: <obsolete link removed>

Last edited by slavanap; 25th March 2016 at 17:27. Reason: obsolete link removed
slavanap is offline   Reply With Quote
Old 25th March 2016, 03:00   #34  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
@slavanap

What colorspaces does your plugin support? I looked at the source and it looks like it only supports RGB32.
Reel.Deel is offline   Reply With Quote
Old 25th March 2016, 06:40   #35  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
Originally Posted by Reel.Deel View Post
What colorspaces does your plugin support? I looked at the source and it looks like it only supports RGB32.
It converts non RGB32 to RGB32. [EDIT: via the filter constructor.]

Code:
return env->Invoke("ConvertToRGB32", AVSValue(args, 1), arg_names).AsClip();
__________________
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; 25th March 2016 at 06:54.
StainlessS is offline   Reply With Quote
Old 25th March 2016, 10:13   #36  |  Link
slavanap
Registered User
 
slavanap's Avatar
 
Join Date: May 2011
Location: Moscow, Russia
Posts: 124
Here's new release: https://github.com/slavanap/autocrop...leases/tag/0.3
And here's code diff: https://github.com/slavanap/autocrop...pare/0.2...0.3

Reel.Deel,
It supports all color spaces, but for processing it converts to RGB32 internally. Now that's explicit. Use any colorspace you want.

StainlessS,
Yes, you're right. Fixed that.

UPDATED:
CropDetect function moved to ssifSource.dll plugin. Here's its public release: https://github.com/slavanap/ssifSource/releases

Last edited by slavanap; 12th June 2016 at 17:53. Reason: updating release link
slavanap is offline   Reply With Quote
Old 6th April 2016, 12:09   #37  |  Link
bcn_246
Registered User
 
bcn_246's Avatar
 
Join Date: Nov 2005
Location: UK
Posts: 117
Thanks for all the help guys. With regard to slavanap's suggestion is there a way to have it scan the whole video (or possibly set it to scan every nth frame) rather than just 20 frames spread out? The content I am working with is from the 90's, so just when I think I have all borders cropped I then notice one 10 second section with an extra few pixels of black border.

With regards to your script StanlessS, are any runtimes etc required? Still not having any luck [(GScript], line 22).

Regards,

Ben
bcn_246 is offline   Reply With Quote
Old 6th April 2016, 22:39   #38  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
You would have problems way before that error if runtimes missing.

You still have not given Debug Output, I expect it to tell Args, and InfoDB name before entry into GScript(script),
ie this line
Code:
   """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
and inside script clip tell if InfoDB variable exists and whether the file exists, ie this line
Code:
        iex = RT_VarExist("InfoDB")
        eex = (iex && Exist(InfoDB))
        RT_DebugF("iex=%s eex=%s InfoDB='%s'",iex,eex,iex?InfoDB:"",name="InfoDBTest: ")
You could also change the first code block to this
Code:
   """)
    RT_DebugF("About to call ScriptClip InfoDB='%s'\nArgs='%s'",InfoDB,args,name="InfoDBTest: ")
    RT_WriteFile("Debug_Script.txt","%s",Script)
    (Subs||Metrics||Metrics2) ? GScript(Script) : NOP
    return Last        
}
Addition in blue. This will write the actual Scriptclip script to Debug_Script.txt.

Then post DebugView ouput text (just the relevant stuff above) and the Debug_Script file.

It actually sounds like a "Wind up", dont see how it is not working
__________________
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 15th April 2016, 17:19   #39  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Yo bcn,

I've just had a problem myself opening a DBase file under Media Player Classic Home Cinema, GOM Player and also Windows Media Player (v11.0, I think).
But no problems under Windows Media Player v2.0, Potplayer, or any Virtual Dub.

No idea how/when/why this came about, I'm quite sure that it use to work just fine under at least MPC-HC, I use it all of the time.
What are you trying to open the DBSC script with ? (try Vdub or PotPlayer or Media Player 2.0 if you have it).

Disabled AntiVirus and Firewall stuff, same.
__________________
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 20th April 2016, 10:03   #40  |  Link
slavanap
Registered User
 
slavanap's Avatar
 
Join Date: May 2011
Location: Moscow, Russia
Posts: 124
bcn_246,
There is a way to scan the whole video
Code:
CropDetect(source, "sample.crop", 24, source.framecount)
but I still don't get it what you want to do with this short part with additional black border. Do you want to crop the area to these 10 pixels, thus you'll loose 10 pixels of all other video part that doesn't have that 10 pixels additional black border? So you need to get maximum cropping values available? The main issue here is that crop values at totally black frames with such tactic will be wrong and will influence on result cropping values.

In this case, maybe, we can dump crop values detected for each frame in a vectors, e.g.
crop_left = array(0,0, ..., 0) -- framecount elements.
crop_top = array(10,11,9, ... , 8) etc.
then sort these arrays and pick the middle element value as a result crop value (i.e. perform median filtration of crop values).
What do you think about it?

Anyway, further task explanation required, because I think I yet don't understand what you want to achieve.
slavanap is offline   Reply With Quote
Reply

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 04:38.


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