Log in

View Full Version : Exblend Problem


feisty2
6th January 2013, 12:59
I wanna deblend a video with "exblend" because it gives me better results than FixBlendIVTC
but the problem is exblend deblends some normal frames which produces very bad output and leaves some blended frames untouched
the source is a typical 3:2 patterned vid but it seems exblend didn't work by patterns, normal frames are "deblended" and blended frames are unprocessed
Is there any way to make exblend work by pattern like writing a "ovr" file in TIVTC "xxxx,xxxx +++--"?
:thanks::stupid:

StainlessS
6th January 2013, 13:10
Take a look at the override arg, heres a snippet from it:


string Override Default "", (not set), eg "Override.txt" (New to v1.01)
Filename of file to force manual override the blend detections.
In v1.03, is only used in MODE=1. Neither Mode 0 nor Mode 2
allows a manual override, you must force the override's in mode
1, v1.03 extends the override ability and greatly increases it's effectivness.
Also, logging will assist in setting up the overrides file.

Required command format:-

444=h1
555
666=*4

In the above case, frame 444 is set to HINTED, ie Not A Blend. The number
after the 'h' denotes the hinted count, in this case 1, eg 444=h2 would
set two consecutive hinted frames.

555 will be set to a SHORT BLEND PAIR ie (H12H), frame 555 (in this case) will
be set to blend index 1, 556 to index 2, and the frames before and after the
blend pair to HINTED. NOTE, in this case frame 555 is the 1st BLEND index and
NOT the first hinted frame.

Frame 666=*4 will set an override at frame 666 to 4 LONG BLEND PAIRS. A long
blend is shown (in logs) as (H12HHH) for FILM or (H12HHHH) for PAL. The frame
(in this case 666) is the position of the 1st blend index, it will (on only
the first LONG BLEND PAIR) be preceded by a hint, and the blend pair followed
by 3 or four hints depending upon whether FILM or PAL mode is in effect. As in
above case, '666=*4' would yield a result of (H12HHH12HHH12HHH12HHH) if in
film mode, or (H12HHHH12HHHH12HHHH12HHHH) in PAL.
With metrics shown, the 'M' flag will show where individual manual override 'H'
hints were set, or blend index 1 postions of either short or long blend pair
overrides (in the 666 example, it will flag the positions of all the 1's
within the parenthesis['(' and ')'] ).

ExBlend is intended to correct clips that do not stay in sequence, if you have
a clip that does stay in sequence (and you are sure of that), you can force
ExBlend to stay in sequence too using the manual override command file. If say
the first, 1st blend index is at frame 2, you could create a text file containing
the manual override command:-

2=*1000000

Thats it. (you would also need to set correct pal/film mode and such). Here
we gave a command to set 1 million LONG BLEND PAIR's, it will cease when
it comes to end of clip, and in the logs will tell you how many it actually set.
This excessive repetition count will not be considered an error by the override
command parser, however, trying to start a new command outside of clip range will
be considered an error. Also, NOTE, all manual override commands MUST be in ascending
order of frame number, you are NOT permitted to override previously set overrides,
some sort of order has to be maintained. As an aid (and byproduct of this strict
ordering) the parser can tell you (in logs) where the next permissable command
may be set. If trying to set up a manual override command file, use the logs, they
are your friend when trying to do this.


EDIT: If unsuccessful upload a small sample to mediafire.

EDIT: Change to full override text.

feisty2
6th January 2013, 13:18
Take a look at the override arg, heres a snippet from it:


ExBlend is intended to correct clips that do not stay in sequence, if you have
a clip that does stay in sequence (and you are sure of that), you can force
ExBlend to stay in sequence too using the manual override command file. If say
the first, 1st blend index is at frame 2, you could create a text file containing
the manual override command:-

2=*1000000

Thats it. (you would also need to set correct pal/film mode and such). Here
we gave a command to set 1 million LONG BLEND PAIR's, it will cease when
it comes to end of clip, and in the logs will tell you how many it actually set.
This excessive repetition count will not be considered an error by the override
command parser, however, trying to start a new command outside of clip range will
be considered an error. Also, NOTE, all manual override commands MUST be in ascending
order of frame number, you are NOT permitted to override previously set overrides,
some sort of order has to be maintained. As an aid (and byproduct of this strict
ordering) the parser can tell you (in logs) where the next permissable command
may be set. If trying to set up a manual override command file, use the logs, they
are your friend when trying to do this.


EDIT: If unsuccessful upload a small sample to mediafire.
:thanks: It works, I trimmed 400 frames to test it,the blended frames are frame 2,3,7,8,12,13..... I write a ovr file "2=*400" and it works perfectly,but pattern changes during scene changing,Do I need to trim every scene out and write a ovr file for all of them?

StainlessS
6th January 2013, 13:19
I found your sample in other thread, gonna take a peek at it.

StainlessS
6th January 2013, 13:48
Are you using the beta version (thats what I'm using) ?

feisty2
6th January 2013, 13:50
Are you using the beta version (thats what I'm using) ?

I'm using ExBlend103b_25_dll_20120215

StainlessS
6th January 2013, 16:03
That clip does go out of sync, when eg fade to black and in blended scene transitions, perhaps other places too.

ExBlend was intended for VCD conversions, but actually copes quite well with your clip.
It's getting above 96% of blend detections although it loses sync at above mentioned transitions, having problems
deciding between what is target blend and the blend transition.

Have not tried FixBlendIVTC on this but I'm guessing the ExBlend will produce better results especially with additional
MC denoising on corrected frames ONLY.

Check this out:

Import("D:\avs\bank\mcdegrain.avs")
MPEG2Source("D:\AVS\AVI\sample.d2v")
AssumeBFF()
Crop(0,92,-0,-92) # Get rid of most borders [mod 4]
########################################
# Use this

#Return Exblend(mode=1,lv=5,debug=true) # 1st Pass
EXB=Exblend(mode=2)
#Return ClipClop(EXB,MCDegrain(EXB,3),CMD="ExBlend_Decimated.TXT") # 2nd Pass, DONE, can use favorite MC denoise filter



########################################
# DISPLAY 4 IMAGE CLIP #
########################################
# # #
# Exblend # Exblend+MCDegrain #
# # #
########################################
# # #
# Blend 1 # Blend 2 #
# # #
########################################

ORIGSUB=EXB.Subtitle("ORIGINAL",Align=1)

EXBDISP=ORIGSUB.ClipClop(EXB.SubTitle("Exblend",Align=1),CMD="ExBlend_Decimated.TXT")
MCD=ORIGSUB.ClipClop(MCDegrain(EXB,3).SubTitle("ExBlend_MCDegrain",Align=1),CMD="ExBlend_Decimated.TXT",show=true)
IX1=ORIGSUB.ClipClop(Exblend(mode=2,disp=0,Decompix=1).SubTitle("Blend_1",Align=1),CMD="ExBlend_Decimated.TXT")
IX2=ORIGSUB.ClipClop(Exblend(mode=2,disp=0,Decompix=2).SubTitle("Blend_2",Align=1),CMD="ExBlend_Decimated.TXT")

T=StackHorizontal(EXBDISP,MCD)
B=StackHorizontal(IX1,IX2)
Return StackVertical(T,B)


EDIT: The above script does pretty good, but if you want to spend a lot more time on it, then also use the Override
command file, see the produced log for where it loses sync.

Just saw your edit, you only need to force an override where it looses sync (see logs), not for every blend pair.

EDIT: Changed previous post to full override doc.
just use eg 2=*1 to force an override for the 1st blend index at frame 2, if goes out of sequence where eg frame
400, should be a blend index 1 detection, add a line to override file "400=*1". this will force it to start syncing at frame
400 and it should lock on untill next sequence break. ... etc.
eg 400=*1 set just a single override if it still goes out of sync at next 1st blend then use eg "400=*2" or more.

EDIT: The 4 windowed clip in script, shows sequences of 3 frames ALL showing "ORIGINAL" subtitle meaning original
frame used, and for every forth frame it shows Exblended, Exblended Mc Degrained, the original 1st blended frame,
and the original 2nd blended frame, so you can better judge how it fares. Output is the decimated output @ 23.976

EDIT: Dont EVER use DirectshowSource() with ExBlend().

StainlessS
6th January 2013, 18:53
Here a script to show FixBlendIVTC and ExBlend (undecimated) clips together.


Import("D:\avs\avs\FixBlendIVTC.avs")
MPEG2Source("D:\AVS\AVI\sample.d2v")
AssumeBFF()
Crop(0,92,-0,-92) # Get rid of most borders [mod 4]
ORG=LAst
FB =ORG.FixBlendIVTC()
EXB=ORG.Exblend(mode=2,decimate=false,disp=2).AssumeFps(29.97)
Return StackVertical(Fb,Exb)


Exblend uses disp=2 to deblend frames in the same order as FixBlendIVTC (which one of the two is replaced,
Exblend normally duplicates the recovered unblend in both originally blended frames, whereas FixBlendIVTC
replaces the 2nd blend by the frame following it).

There will be some mismatch between them where they make different detections but are mostly the same.

I found a bug in ExBlend beta, when Decimate=false, it still outputs a 23.976 FPS clip when it should not, I've fixed in
above script just by an AssumeFPS.

Note, the FixBlendIVTC clip (top) has had denoising done on the unblended frames where ExBlend has not.

EDIT: Fixed ExBlend() decimate FPS bug in v1.03b2, thread here:
http://forum.doom9.org/showthread.php?t=157337

Or get it @ mediafire in sig.

feisty2
7th January 2013, 03:12
That clip does go out of sync, when eg fade to black and in blended scene transitions, perhaps other places too.

ExBlend was intended for VCD conversions, but actually copes quite well with your clip.
It's getting above 96% of blend detections although it loses sync at above mentioned transitions, having problems
deciding between what is target blend and the blend transition.

Have not tried FixBlendIVTC on this but I'm guessing the ExBlend will produce better results especially with additional
MC denoising on corrected frames ONLY.

Check this out:

Import("D:\avs\bank\mcdegrain.avs")
MPEG2Source("D:\AVS\AVI\sample.d2v")
AssumeBFF()
Crop(0,92,-0,-92) # Get rid of most borders [mod 4]
########################################
# Use this

#Return Exblend(mode=1,lv=5,debug=true) # 1st Pass
EXB=Exblend(mode=2)
#Return ClipClop(EXB,MCDegrain(EXB,3),CMD="ExBlend_Decimated.TXT") # 2nd Pass, DONE, can use favorite MC denoise filter



########################################
# DISPLAY 4 IMAGE CLIP #
########################################
# # #
# Exblend # Exblend+MCDegrain #
# # #
########################################
# # #
# Blend 1 # Blend 2 #
# # #
########################################

ORIGSUB=EXB.Subtitle("ORIGINAL",Align=1)

EXBDISP=ORIGSUB.ClipClop(EXB.SubTitle("Exblend",Align=1),CMD="ExBlend_Decimated.TXT")
MCD=ORIGSUB.ClipClop(MCDegrain(EXB,3).SubTitle("ExBlend_MCDegrain",Align=1),CMD="ExBlend_Decimated.TXT",show=true)
IX1=ORIGSUB.ClipClop(Exblend(mode=2,disp=0,Decompix=1).SubTitle("Blend_1",Align=1),CMD="ExBlend_Decimated.TXT")
IX2=ORIGSUB.ClipClop(Exblend(mode=2,disp=0,Decompix=2).SubTitle("Blend_2",Align=1),CMD="ExBlend_Decimated.TXT")

T=StackHorizontal(EXBDISP,MCD)
B=StackHorizontal(IX1,IX2)
Return StackVertical(T,B)


EDIT: The above script does pretty good, but if you want to spend a lot more time on it, then also use the Override
command file, see the produced log for where it loses sync.

Just saw your edit, you only need to force an override where it looses sync (see logs), not for every blend pair.

EDIT: Changed previous post to full override doc.
just use eg 2=*1 to force an override for the 1st blend index at frame 2, if goes out of sequence where eg frame
400, should be a blend index 1 detection, add a line to override file "400=*1". this will force it to start syncing at frame
400 and it should lock on untill next sequence break. ... etc.
eg 400=*1 set just a single override if it still goes out of sync at next 1st blend then use eg "400=*2" or more.

EDIT: The 4 windowed clip in script, shows sequences of 3 frames ALL showing "ORIGINAL" subtitle meaning original
frame used, and for every forth frame it shows Exblended, Exblended Mc Degrained, the original 1st blended frame,
and the original 2nd blended frame, so you can better judge how it fares. Output is the decimated output @ 23.976

EDIT: Dont EVER use DirectshowSource() with ExBlend().

thx,it works for most frames I appreciate it:thanks:,but still remains the same old problem on other few frames
like this (combed 2 normal frames togther)
http://thumbnails106.imagebam.com/23068/fc089c230679778.jpg (http://www.imagebam.com/image/fc089c230679778)
or this (doesn't comb blended frames togther)
http://thumbnails108.imagebam.com/23068/1b32a5230679902.jpg (http://www.imagebam.com/image/1b32a5230679902)

any easy solution without writing ovr file?

Forensic
7th January 2013, 05:51
@ StainlessS
You noted "EDIT: Dont EVER use DirectshowSource() with ExBlend()". Does DirectshowSource introduce a limitation that does not occur with avisource and FFVideoSource?

StainlessS
7th January 2013, 13:48
@Forensic,
DirectshowSource(), apart from being frame inaccurate (ExBlend detection requires access to 7 frames, 3 either side of current frame),
it may have auto deinterlacing, auto IVTC etc turned on in the DSS filters (eg mpeg decoder), IVTC would produce jumping video as it
constantly goes out of DSS IVTC sync. Deinterlacing would produce blends, had one user that was trying to get rid of blends introduced
in DSS. ExBlend is for Progressive only, deinterlace on real interlaced or telecine may produce blending.

@feisty2
I'm afraid you would need to use the override there, obviously something caused it to go out of sync (ie break in sequence) and it takes
a few frames to get back into sync, your clip constantly breaks sequence (probably as most music videos, changing scene,
looks like the scenes were handled individually and then joined together with blend transitions and a sequence break somewhere
within those blend transitions).