Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ______________________________________________________________________________
- pass0.avsi
- ______________________________________________________________________________
- ###
- ### Pass 0
- ### Dot crawl and rainbow removal (strictly temporal)
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (512)
- Import ("cut.avsi")
- MPEG2Source ("ykk.d2v")
- AssumeFps (30000, 1001)
- Eval (cut_str)
- remove_rdc (op_str, ed_str, notcomb_str)
- Function remove_rdc (clip src, string frames_op, string frames_ed, string notcomb_str, int "show_mask")
- {
- show_mask = Default (show_mask, 0)
- src
- rdc_a = LUTDeRainbow () # Don't use LUTDeCrawl, too much artifacts.
- rdc_b = TComb (mode=2, fthreshL=4, othreshL=6, fthreshC=7, othreshC=10)
- rdc_am = mt_makediff (rdc_a, last, y=3, u=3, v=3)
- rdc_bm = mt_makediff (rdc_b, last, y=3, u=3, v=3)
- rdc_m = mt_lutxy (rdc_am, rdc_bm, expr="x 128 - abs y 128 - abs < y x ?", y=3, u=3, v=3)
- mt_merge (rdc_a, rdc_b, rdc_m, y=3, u=3, v=3)
- ReplaceFramesSimple (rdc_a, mappings=notcomb_str)
- (frames_op != "" || frames_ed != "")
- \ ? remove_rdc_strong (frames_op, frames_ed, show_mask)
- \ : last
- (show_mask == 5)
- \ ? mt_makediff (src, last, y=3, u=3, v=3).mt_lut (
- \ yexpr="x 128 - 8 * 128 +",
- \ expr="x 128 - 4 * 128 +",
- \ y=3, u=3, v=3)
- \ : last
- }
- Function remove_rdc_strong (clip src, string frames_op, string frames_ed, int show_mask)
- {
- src
- len = src.FrameCount ()
- SeparateFields ()
- SelectEven () + SelectOdd ()
- DeRainbow () # Sh0dan's
- Interleave (Trim (0, -len), Trim (len, 0))
- Weave ()
- rdc_c = last
- tst = src.TFM ().TemporalSoften (7, 32, 255, 255)
- highc = tst.mt_edge (mode="min/max", thY1=0, thY2=255)
- small = highc.mt_lut ("x 160 - 8 *")
- big_op = tst.remove_rdc_mask_op ()
- big_ed = tst.remove_rdc_mask_ed (highc)
- big = big_op.ReplaceFramesSimple (big_ed, mappings=frames_ed)
- rdc_cm = mt_hysteresis (small, big, u=-128, v=-128)
- mt_merge (src, rdc_c, rdc_cm, luma=true, y=2, u=3, v=3)
- (show_mask == 2) ? rdc_cm : last
- (show_mask == 3) ? mt_merge (src.BlankClip (), src, rdc_cm, y=3, u=3, v=3) : last
- strong = last
- src.ReplaceFramesSimple (strong, mappings=frames_op + chr(10) + frames_ed)
- (show_mask == 1) ? rdc_cm : last
- (show_mask == 4)
- \ ? mt_makediff (src, last, y=3, u=3, v=3).mt_lut (
- \ yexpr="x 128 - 8 * 128 +",
- \ expr="x 128 - 4 * 128 +",
- \ y=3, u=3, v=3)
- \ : last
- }
- Function remove_rdc_mask_op (clip tst)
- {
- tst
- mt_binarize (threshold=224)
- mt_expand_multi (sw=3, sh=3, mode="ellipse")
- PointResize (Width (), Height (), -1, -1)
- }
- # End credit font is thiner than on the OP and must be detected
- # more carefully.
- Function remove_rdc_mask_ed (clip tst, clip highc)
- {
- highc2 = highc.mt_lut ("x 128 - 8 *")
- white = tst.mt_lut ("x 192 - 8 *")
- white = white.mt_expand_multi (sw=3, sh=3, mode="ellipse")
- white = white.PointResize (white.Width (), white.Height (), -2, -2)
- white = white.mt_binarize ()
- sub = mt_lutxy (
- \ tst.PointResize (tst.Width (), tst.Height (), -1, -1),
- \ tst.PointResize (tst.Width (), tst.Height (), 1, 1),
- \ expr="x y - 16 - 128 > 255 0 ?"
- \ )
- sub = sub.mt_expand_multi (sw=3, sh=3, mode="ellipse")
- highc2 = highc2.mt_expand ().mt_binarize ()
- big = mt_logic (white, sub, mode="max")
- big = mt_logic (big, highc2, mode="max")
- big
- }
- ______________________________________________________________________________
- pass1.avsi
- ______________________________________________________________________________
- ###
- ### Pass 1
- ### Deinterlacing
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (1024)
- SetMTMode (3, 3)
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "0", 0, fps_num=30000, fps_den=1001, threads=2)
- \ : fslg_load_seg (ep_str, "0", seg_str, 30*60*1, fps_num=30000, fps_den=1001, threads=2)
- SetMTMode (2)
- QTGMC (lossless=2, tr0=1, tr1=1, tr2=1, EdiThreads=2)
- ______________________________________________________________________________
- pass2.avsi
- ______________________________________________________________________________
- ###
- ### Pass 2
- ### Blending removal and conversion to 24p
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (1024)
- (ep_str == "01" && seg_str == "01") ? SetMTMode (5, 1) : NOP () # Don't ask...
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "1", 0, fps_num=60000, fps_den=1001, threads=2)
- \ : fslg_load_seg (ep_str, "1", seg_str, 60*60*1, fps_num=60000, fps_den=1001, threads=2)
- RequestLinear (clim=15)
- c_deint60 = last
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "0", 0, fps_num=30000, fps_den=1001, threads=2)
- \ : fslg_load_seg (ep_str, "0", seg_str, 30*60*1, fps_num=30000, fps_den=1001, threads=2)
- RequestLinear (clim=15)
- ##################################################
- debug = false
- compa = 0
- ##################################################
- c_org = last
- w = Width ()
- h = Height ()
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- c_mask_3f = find_3field_mask ()
- c_dw = DoubleWeave ()
- len_2x = c_dw.FrameCount ()
- c_deint60_x = StackVertical (c_deint60, c_deint60.BlankClip (height=4, color_yuv=$FF8080), c_mask_3f)
- c_dw_x = StackVertical (c_dw, c_dw .BlankClip (height=4, color_yuv=$008080), c_mask_3f)
- tfm60_x = c_dw_x.Loop (-1).TFM (
- \ y0=h,
- \ y1=c_dw_x.Height () - 1,
- \ clip2=c_deint60_x.Loop (-1),
- \ PP=4,
- \ MI=60,
- \ ovr="ep-"+ep_str+"-tfm-override.txt",
- \ display=debug
- \ ).Trim (0, -len_2x)
- tfm60 = tfm60_x.Crop (0, 0, 0, h)
- c_aa = tfm60.daa_mod (threads=3, nns=4)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- c_all = StackVertical (c_aa, tfm60_x)
- c_blend24 = c_all.SRestore (frate=24000.0/1001.0, dclip=c_aa, cache=-1)
- c_blend24 = c_blend24.RequestLinear (elim=20)
- c_ivtc24 = c_org.TFM (PP=0).TDecimate (mode=1, clip2=c_all.SelectEven ())
- c_blend24.ReplaceFramesSimple_oor (c_ivtc24, mappings=stdivtc_str)
- AssumeFps (24000, 1001)
- c_all24 = last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- c_aa24 = Crop (0, 0, 0, h)
- c_n24 = Crop (0, h, 0, h)
- c_mask_di24 = Crop (0, h * 2 , 0, 4).PointResize (w, h)
- c_mask_3f24 = Crop (0, h * 2 + 4, 0, 4)
- c_vinv24 = c_n24.Vinverse ()
- c_vinv24 = mt_merge (c_vinv24, c_n24, c_mask_di24, luma=true)
- c_blur = c_aa24.RemoveGrain (11, -1)
- c_mmo_soft = c_blur.find_motion_mask (true)
- c_mmo_hard = c_blur.find_motion_mask (false)
- c_mmo_aa = c_mmo_hard.ReplaceFramesSimple_oor (c_mmo_soft, mappings=lessmoaa_str)
- c_mmo_vi = c_mmo_hard
- clean_frames_new (c_n24, c_aa24, c_vinv24, c_mask_3f24, c_mmo_aa, c_mmo_vi, comb_str, disexmask_str, forceaa_str, disableaa_str, disablevi_str)
- c_24p = last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- (debug ) ? tfm60_x
- \ : (compa == 1) ? Interleave (c_n24.Subtitle ("c_n24"), c_24p.Subtitle ("c_24p"))
- \ : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Function fix_ep01_manual (clip src, clip c_aa)
- {
- src
- fix1 = StackVertical (
- \ src.Crop (0, 0, 0, 256),
- \ StackHorizontal (
- \ src.Crop (0, 256, 400, 0),
- \ c_aa.Crop (400, 256, 0, 0)
- \ )
- \ )
- src.ReplaceFramesSimple_oor (fix1, mappings="[102235 102314]")
- }
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Modification : nnedi3
- function daa_mod (clip c, int "nns", int "threads")
- {
- nn = c.nnedi3(field=-2, nns=nns, threads=threads)
- dbl = mt_average(selecteven(nn),selectodd(nn),U=3,V=3)
- dblD = mt_makediff(c,dbl,U=3,V=3)
- shrpD = mt_makediff(dbl,dbl.removegrain((width(c)>1100) ? 20 : 11),U=3,V=3)
- DD = shrpD.repair(dblD,13)
- return dbl.mt_adddiff(DD,U=3,V=3)
- }
- Function ReplaceFramesSimple_oor (clip base, clip src, string "filename", string "mappings", int "maxtime")
- {
- maxtime = Default (maxtime, 30) # Minutes
- lsec = Int (base.FrameRate () * maxtime * 60)
- len = base.FrameCount ()
- ladd = Max (lsec - len, 0)
- base = base + base.BlankClip (length=ladd)
- src = src + src.BlankClip (length=ladd)
- base.ReplaceFramesSimple (src, filename=filename, mappings=mappings)
- Trim (0, -len)
- }
- Function find_motion_mask (clip c_blur, bool lessen)
- {
- c_blur
- (lessen) ? RemoveGrain (20, -1) : last
- (lessen) ? TemporalSoften (1, 32, 255, 255) : last
- mt_makediff (last, last.SelectEvery (1, 1))
- mt_lut ("x 128 - abs 5 - 16 *")
- mt_expand ()
- mt_logic (last, last.SelectEvery (1, -1), mode="max")
- RemoveGrain (20, -1)
- }
- # Principe:
- #
- # En cas de mouvement, les images tenant sur 3 fields dans le pattern 3:2
- # ont une IVTC bizarre, qu'on pourrait décrire sous forme : (A-B-A)-(C-C)
- # Les 3 types de field A, B et C sont exposés différemment. Le C est moyen,
- # l'A est plus flou et le B est plus net. Notons que les fields A et B
- # appartiennent à la même image. Cet écart d'exposition semble n'apparaître
- # qu'en cas de mouvement, et il est très prononcé sur les pans à 24 fps.
- #
- # On commence donc par chercher les A-B-A en mouvement, qui nécessitent
- # un traitement particulier. En fait, on cherche la position d'un field B.
- # D'une part, on compare le field précédent au suivant (les A potentiels) :
- # ils doivent être très similaires, leur différence absolue proche de zéro.
- # D'autre part, on compare le field central aux deuxièmes suivant et
- # précédents : ils doivent être différents, si les 3 frames auquels ils
- # sont rattachés sont différentes.
- #
- # Une fois qu'on a trouvé et masqué le field B, on étale le masque sur
- # les fields A associés.
- Function find_3field_mask (clip c_org)
- {
- c_org
- SeparateFields ()
- RemoveGrain (20, -1)
- ScriptClip ("""
- dif_11 = mt_makediff (SelectEvery (1, -1), SelectEvery (1, +1))
- dif_11 = dif_11.mt_lut ("x 128 - abs 16 *")
- dif_20 = dif_11.SelectEvery (1, -1)
- dif_02 = dif_11.SelectEvery (1, +1)
- al_mid = dif_11.AverageLuma ()
- al_prev = dif_20.AverageLuma () - al_mid
- al_next = dif_02.AverageLuma () - al_mid
- #cmp_prev = mt_lutxy (dif_20, dif_11, expr="x y -").mt_inpand ()
- #cmp_next = mt_lutxy (dif_02, dif_11, expr="x y -").mt_inpand ()
- #al_prev = cmp_prev.AverageLuma ()
- #al_next = cmp_next.AverageLuma ()
- (al_prev > 5 && al_next > 5) ? mt_lut (y=-255) : mt_lut (y=0)
- """)
- Crop (0, 0, 0, 4)
- frame_mask = last
- frame_mask = mt_logic (frame_mask, SelectEvery (1, -1), mode="or")
- frame_mask = mt_logic (frame_mask, SelectEvery (1, +1), mode="or", u=-128, v=-128)
- return (frame_mask)
- }
- Function clean_frames_new (clip tfmout, clip c_aa, clip c_vinv, clip c_mask_3f, clip c_mmo_aa, clip c_mmo_vi, string comb_str, string disexmask_str, string forceaa_str, string disableaa_str, string disablevi_str)
- {
- mask_sc = c_aa.ScriptClip ("""
- YDifferenceFromPrevious () > 30 ? mt_lut (y=-255) : mt_lut (y=0)
- """)
- w = tfmout.Width ()
- h = tfmout.Height ()
- c_mask_3f
- ReplaceFramesSimple_oor (mt_lut (y=-255), mappings=forceaa_str)
- PointResize (w, h)
- frame_mask = last
- frame_mask = mt_logic (frame_mask, mask_sc, mode="max")
- edge_mask = c_aa.mt_edge (mode="prewitt", thY1=0, thY2=255) # edge_vert_only ()
- edge_mask = edge_mask.RemoveGrain (20, -1)
- edge_mask = edge_mask.mt_lut ("x 8 - 8 *")
- aa_mask = mt_logic (frame_mask, edge_mask, mode="and")
- aa_mask = mt_logic (aa_mask, c_mmo_aa, mode="min")
- mask_hor1 = c_vinv.mt_edge ("1 1 1 0 0 0 -1 -1 -1 1", thY1=0, thY2=255)
- mask_ver = c_aa.mt_edge ("1 0 -1 1 0 -1 1 0 -1 1", thY1=0, thY2=255)
- mask_hor = mt_lutxy (mask_hor1, mask_ver, "x y -")
- mask_excl = mask_hor
- mask_excl = mask_excl.mt_expand ()
- mask_excl = mask_excl.mt_inpand_multi (sw=2, sh=3)
- mask_excl = mask_excl.mt_expand_multi (sw=3, sh=4)
- mask_excl = mask_excl.mt_inpand_multi (sw=1, sh=1)
- mask_excl = mask_excl.RemoveGrain (20, -1)
- mask_excl = mask_excl.mt_lut ("x 32 - 6 *")
- mask_excl = mask_excl.RemoveGrain (20, -1)
- mask_excl = mt_logic (mask_sc, mask_excl, "andn")
- mt_lutxy (aa_mask, mask_excl, expr="x y -")
- ReplaceFramesSimple_oor (aa_mask, mappings=disexmask_str)
- aa_mask = last
- mt_lutxy (c_mmo_vi, mask_excl, expr="x y -")
- ReplaceFramesSimple_oor (c_mmo_vi, mappings=disexmask_str)
- c_mmo_vi = last
- tfmout
- mt_merge (last, c_vinv, c_mmo_vi, luma=true)
- ReplaceFramesSimple_oor (c_vinv, mappings=comb_str)
- ReplaceFramesSimple_oor (tfmout, mappings=disablevi_str)
- c_noaa = last
- mt_merge (last, c_aa, aa_mask, luma=true)
- ReplaceFramesSimple_oor (c_noaa, mappings=disableaa_str)
- #TEST# aa_mask.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# mask_excl.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# mask_hor.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# mask_sc.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# c_mmo_aa.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# c_mmo_vi.GreyScale ().Levels (0,1,255, 16,235)
- #TEST# mt_merge (last, last.Subtitle ("_______________xxxx"), frame_mask, luma=true)
- }
- Function edge_vert_only (clip src)
- {
- src
- mt_edge ("1 0 -1 1 0 -1 1 0 -1 1", thY1=0, thY2=255)
- }
- # Not used
- Function edge_prewitt_no_hor (clip src)
- {
- src
- mt_logic (
- \ mt_edge ("1 1 0 1 0 -1 0 -1 -1 1", thY1=0, thY2=255),
- \ mt_logic (
- \ mt_edge ("1 0 -1 1 0 -1 1 0 -1 1", thY1=0, thY2=255),
- \ mt_edge ("0 -1 -1 1 0 -1 1 1 0 1", thY1=0, thY2=255),
- \ mode="max"
- \ ),
- \ mode="max"
- \ )
- }
- ______________________________________________________________________________
- pass3.avsi
- ______________________________________________________________________________
- ###
- ### Pass 3
- ### Deblocking
- ### Comb removal during fades
- ### Chroma bleeding removal
- ### Mosquito noise removal on high motion scenes
- ### Dehaloing, 1st pass
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (1024)
- SetMTMode (3, 2)
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "2", 0)
- \ : fslg_load_seg (ep_str, "2", seg_str, 24*60*1)
- c_org = last
- w = Width ()
- h = Height ()
- SetMTMode (2)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Deblock
- dqed = Deblock_QED ()
- dqed_dif = mt_makediff (dqed, last, y=3, u=3, v=3)
- dqed_dif = dqed_dif.mt_lut ("x 128 < x 1 + x 128 > x 1 - x ? ?", y=3, u=3, v=3)
- mt_adddiff (last, dqed_dif, y=3, u=3, v=3)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Comb removal
- (ep_str == "OP") ? last : ScriptClip ("""
- fmul = 1
- d_thr1 = 0.5
- d_thr2 = -0.001
- fad_m2 = SelectEvery (1, -2*fmul)
- fad_m1 = SelectEvery (1, -1*fmul)
- fad_p1 = SelectEvery (1, +1*fmul)
- fad_p2 = SelectEvery (1, +2*fmul)
- al_0 = last.AverageLuma ()
- al_m1 = fad_m1.AverageLuma ()
- al_m2 = fad_m2.AverageLuma ()
- al_p1 = fad_p1.AverageLuma ()
- al_p2 = fad_p2.AverageLuma ()
- d_m2 = al_m1 - al_m2
- d_m1 = al_0 - al_m1
- d_p1 = al_p1 - al_0
- d_p2 = al_p2 - al_p1
- dl_m2 = Min (Abs (d_m2), d_thr1 * 1.1)
- dl_m1 = Min (Abs (d_m1), d_thr1 * 1.1)
- dl_p1 = Min (Abs (d_p1), d_thr1 * 1.1)
- dl_p2 = Min (Abs (d_p2), d_thr1 * 1.1)
- fad1dir_flag = (d_m1 * d_p1 >= d_thr2) && (d_m2 * d_m1 >= d_thr2) && (d_p2 * d_p1 >= d_thr2)
- fad1q_flag = (dl_m2 + dl_m1 + dl_p1 + dl_p2 > d_thr1 * 2)
- fad1_flag = (fad1dir_flag && fad1q_flag)
- msg_str = String (d_m2)+" "+String (d_m1)+" "+String (d_p1)+" "+String (d_p2)
- msg_str = msg_str + ((fad1_flag) ? "\nPotential frame fade" : "\n")
- thr = 0.4
- sep = SeparateFields ()
- dif = sep.SelectOdd ().AverageLuma() - sep.SelectEven ().AverageLuma()
- fad2_flag = (abs (dif) > thr)
- msg_str = msg_str + "\n" + String (dif)
- msg_str = msg_str + ((fad2_flag) ? "\nPotential field fade" : "\n")
- fad_flag = (fad1_flag && fad2_flag)
- msg_str = (fad_flag) ? msg_str + "\n*** Fade! ***" : msg_str
- vv_limit = 5
- vv_expr = "x y - x y - "+String(vv_limit)+" 1.3 * / 6 ^ 1 + / y +"
- (fad_flag) ? mt_lutxy (Vinverse (), last, expr=vv_expr, y=3, u=3, v=3) : last
- #TEST# Subtitle (msg_str, lsp=1)
- """)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Chroma bleeding
- (ep_str == "OP") ? last : fslg_warp_chroma_h ()
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Mosquito noise
- RequestLinear ()
- mask_edg = mt_edge (mode="prewitt", thY1=0, thY2=255)
- mask_det = mt_edge (mode="min/max", thY1=0, thY2=255)
- m_p = mask_edg.SelectEvery (1, -1)
- m_n = mask_edg.SelectEvery (1, +1)
- mask_edg_dyn = mask_edg
- mask_edg_dyn = mt_logic (mask_edg_dyn, m_p, mode="max")
- mask_edg_dyn = mt_logic (mask_edg_dyn, m_n, mode="max")
- m_np = mt_logic (m_p, m_n, mode="min")
- mask_e1 = mt_lutxy (mask_edg_dyn, m_np, expr="x y - 144 - 8 *")
- mask_e2 = mt_lutxy (mask_edg, m_np).mt_lut (expr="x 144 - 8 *")
- mask_e1_large = mask_e1.BicubicResize (w/4, h/4, 1, 0).BicubicResize (w, h, 1 ,0).mt_lut (expr="x 4 *")
- mask_e1_large = mask_e1_large.BicubicResize (w/4, h/4, 1, 0).BicubicResize (w, h, 1 ,0).mt_lut (expr="x 3 *")
- mask_e1_large = mask_e1_large.BicubicResize (w/4, h/4, 1, 0).BicubicResize (w, h, 1 ,0).mt_lut (expr="x 2 *")
- mask_z = mask_e2.mt_expand_multi (mode="ellipse", sw=2, sh=2).mt_inpand_multi (mode="ellipse", sw=2, sh=2)
- mask_z = mt_lutxy (mask_z, mask_e1, "x y -")
- mask_z = mask_z.BicubicResize (w/2, h/2, 1, 0).BicubicResize (w, h, 1, 0)
- mask_z = mask_z.mt_lut (expr="x 2 *")
- mask_k = mt_lutxy (mask_e1_large, mask_z, "x y -")
- c_filt_raw = dfttest (sigma=32, tbsize=1)
- c_filt_raw = ContraSharpen (c_filt_raw, last)
- c_filt = mt_merge (last, c_filt_raw, mask_k, luma=true)
- last.ReplaceFramesSimple_oor (c_filt, mappings=spden_str)
- c_filt = last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Dehaloing
- # Regarder 25134 (17:28.30)
- c_deh_strong = FineDehalo (rx=2, ry=2, thmi=60, thma=100, thlimi=40, thlima=80, brightstr=1.0, darkstr=0.5, contra=0.0, edgeproc=0.35, showmask=0)
- c_deh_light = FineDehalo (rx=2, ry=2, thmi=60, thma=100, thlimi=40, thlima=80, brightstr=0.5, darkstr=0.25, contra=0.5, edgeproc=0.35, showmask=0)
- c_deh = c_deh_strong.ReplaceFramesSimple_oor (c_deh_light, mappings=lightdh_str)
- c_deh.ReplaceFramesSimple_oor (last, mappings=nodh_str)
- c_deh = last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Display tests
- #Interleave (c_org.Subtitle ("o"), last.Subtitle ("p"))
- #mask_e1.GreyScale ()
- #mask_e1_large.GreyScale ()
- #mask_z.GreyScale ()
- #mask_k.GreyScale ()
- #mt_lutxy (c_org, mask_mb.GreyScale (), "x 15 * y + 16 /")
- #c_filt
- #mt_average (last, scm.GreyScale ())
- #aa_m.GreyScale ()
- #Spline36Resize (w*2, h*2)
- last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Function ReplaceFramesSimple_oor (clip base, clip src, string "filename", string "mappings", int "maxtime")
- {
- maxtime = Default (maxtime, 30) # Minutes
- lsec = Int (base.FrameRate () * maxtime * 60)
- len = base.FrameCount ()
- ladd = Max (lsec - len, 0)
- base = base + base.BlankClip (length=ladd)
- src = src + src.BlankClip (length=ladd)
- base.ReplaceFramesSimple (src, filename=filename, mappings=mappings)
- Trim (0, -len)
- }
- Function fslg_warp_chroma_h (clip src)
- {
- src
- w = Width ()
- h = Height ()
- PointResize (w, h * 5) # Cancels awarpsharp vertical effect
- aWarpSharp2 ()
- PointResize (w, h, 0, 2)
- src.MergeChroma (last)
- }
- ______________________________________________________________________________
- pass4.avsi
- ______________________________________________________________________________
- ###
- ### Pass 4
- ### Search clip perparation
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (768)
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- Import ("fslg-denoise.avsi")
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "3", 0, threads=2)
- \ : fslg_load_seg (ep_str, "3", seg_str, 24*60*1, threads=2)
- c_org = last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Vinverse ()
- ChubbyRain2mod (th=6)
- aa = Santiag (strh=1, strv=1, threads=3)
- mask = aa.fslg_make_edge_mask ()
- mt_merge (last, aa, mask, luma=true)
- fslg_make_search_clip (sigma=24, threads=3, lamt=2)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- #Interleave (c_org.Subtitle ("o"), last.Subtitle ("p3"))
- #c_org
- last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Function fslg_make_edge_mask (clip src)
- {
- src
- mt_edge (mode="min/max", thY1=0, thY2=255)
- mt_lut ("x 10 - 0 max 200 / 0.5 ^ 600 *")
- mt_expand_multi (sw=3, sh=3, mode="ellipse")
- RemoveGrain (20, -1)
- RemoveGrain (20, -1)
- RemoveGrain (20, -1)
- }
- ______________________________________________________________________________
- pass5.avsi
- ______________________________________________________________________________
- ###
- ### Pass 5
- ### MC stuff: denoising, temporal smoothing, sharpening
- ### Level correction
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (1024)
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- ##################################################
- compa = 0
- lossless16 = true
- ##################################################
- (compa == 1)
- \ ? ((seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "2", 0, threads=1)
- \ : fslg_load_seg (ep_str, "2", seg_str, 24*60*1, threads=1)
- \ )
- \ : last
- c_pass1 = last
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "4", 0, threads=1)
- \ : fslg_load_seg (ep_str, "4", seg_str, 24*60*1, threads=1)
- c_ana = last
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "3", 0, threads=1)
- \ : fslg_load_seg (ep_str, "3", seg_str, 24*60*1, threads=1)
- c_org = last
- w = Width ()
- h = Height ()
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pre-sharpening
- dftsig = (ep_str == "OP") ? 16 : 4
- den_base = (ep_str == "OP") ? Vinverse () : last
- den_base = den_base.dfttest (sigma=dftsig, tbsize=1)
- mask_edge = den_base.mt_edge (mode="prewitt", thY1=0, thY2=255)
- mask_edge = mask_edge.mt_lut (expr="x 80 - 4 *")
- mask_halo = mask_edge.mt_expand_multi (sw=6, sh=5, mode="ellipse")
- mask_shrp = mask_edge.mt_inflate ()
- mask_shrp = mt_lutxy (mask_halo, mask_shrp, "x y -")
- mask_shrp = mask_shrp.RemoveGrain (20, -1)
- dh_mask = mask_edge.mt_expand_multi (sw=3, sh=3, mode="ellipse")
- dh_mask = mt_lutxy (dh_mask, mask_edge, "x y -")
- dh_mask = dh_mask.RemoveGrain (20, -1)
- dh_src = den_base
- dh_src = dh_src.Dehalo_alpha ()
- #dh_src = dh_src.RemoveGrain (4)
- denoised = mt_merge (den_base, dh_src, dh_mask, luma=true)
- c_shrp = Seesaw (
- \ denoised=denoised, nrlimit=0, nrlimit2=1,
- \ bias=100, sstr=1.25, Spower=2, Szp=3,
- \ Sdamplo=0, SdampHi=99, Slimit=30, sootheT=0, sootheS=0)
- # Previous settings:
- # nrlimit=0, nrlimit2=1, bias=100, sstr=1.25, Spower=4, Szp=3, Sdamplo=0, SdampHi=14, Slimit=5, sootheT=0, sootheS=0
- c_shrp = (ep_str == "OP") ? Merge (last, c_shrp, 1.0/3) : c_shrp
- c_shrp = mt_merge (c_shrp, last, mask_shrp, luma=true)
- c_shrp = c_shrp.ReplaceFramesSimple_oor (last, mappings=nosharp_str)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Temporal stabilization (denoising)
- # Frames 41139 (combing), 4862, 4866 (rougeur sous l'oeil), 2730,2763 (rainbows), 23180 (faible gradient, bruit), 37849 (ciel étoilé), 34990 (mouvement avec objets dégueulasses)
- # 31097
- tr = 6
- pel = 4
- blksize = 8
- sad = 150
- dct=0
- super_a = c_ana.MSuper (pel=pel)
- super_p = c_shrp.MSuper (pel=pel, levels=1)
- super_a = super_a.RequestLinear (clim=20, elim=8)
- super_p = super_p.RequestLinear (clim=20, elim=8)
- vv = super_a.MAnalyse (multi=true, delta=tr, blksize=blksize, overlap=blksize/2, dct=dct)
- vb1 = vv.SelectEvery (tr * 2, 0)
- vf1 = vv.SelectEvery (tr * 2, 1)
- vb2 = vv.SelectEvery (tr * 2, 2)
- vf2 = vv.SelectEvery (tr * 2, 3)
- vb3 = vv.SelectEvery (tr * 2, 4)
- vf3 = vv.SelectEvery (tr * 2, 5)
- cf3 = last.MCompensate (super_p, vf3, thSAD=sad)
- cf2 = last.MCompensate (super_p, vf2, thSAD=sad)
- cf1 = last.MCompensate (super_p, vf1, thSAD=sad)
- cb1 = last.MCompensate (super_p, vb1, thSAD=sad)
- cb2 = last.MCompensate (super_p, vb2, thSAD=sad)
- cb3 = last.MCompensate (super_p, vb3, thSAD=sad)
- vmb2 = MMask (vb2, kind=1, ml=100.0*sad/400.0, gamma=1.5)
- vmb1 = MMask (vb1, kind=1, ml=100.0*sad/400.0, gamma=1.5)
- vmf1 = MMask (vf1, kind=1, ml=100.0*sad/400.0, gamma=1.5)
- vmf2 = MMask (vf2, kind=1, ml=100.0*sad/400.0, gamma=1.5)
- vmb = mt_logic (vmb1, vmb2, mode="min")
- vmf = mt_logic (vmf1, vmf2, mode="min")
- vm = mt_logic (vmb, vmf, mode="min")
- c_spa = dfttest (sigma=12, tbsize=1, lsb=true, threads=2)
- c_deg = last.MergeChroma (last.MDegrain1 (super_p, vb1, vf1, plane=3, thSAD=sad, thSADC=sad*2))
- c_deg_heavy = c_deg.MDegrainN (super_p, vv, tr, thSAD=sad, lsb=true)
- c_deg_heavy = Dither_merge16_8 (c_deg_heavy, c_spa, vm, luma=true)
- c_deg_light = c_deg.MDegrain1 (super_p, vb1, vf1, thSAD=sad, lsb=true)
- c_deg = c_deg_heavy.ReplaceFramesSimple_oor (c_deg_light, mappings=lowtr_str)
- c_dft = Interleave (cb3, cb2, cb1, last, cf1, cf2, cf3)
- c_dft = c_dft.dfttest (sigma=2, tbsize=7, sbsize=16, sosize=12, lsb=true)
- c_dft = c_dft.SelectEvery (7, 3)
- c_filt = c_dft.Dither_limit_dif16 (c_deg, thr=0.4)
- c_db = c_filt.Dither_bilateral16 (radius=12, thr=1.5, flat=0.75, wmin=1.0)
- c_filt = c_db.Dither_limit_dif16 (c_filt, thr=0.25)
- # Mask for edges only, bypassing the noise
- filt_mask = last.Dither_build_gf3_range_mask (2)
- filt_mask = filt_mask.mt_lut ("x 8 - 24 *")
- filt_mask = filt_mask.mt_expand ().mt_expand ().RemoveGrain (20, -1)
- c_nofilt = last.Dither_convert_8_to_16 ()
- # Mask for dark and low contrast areas
- c_lp = last.BilinearResize (w/(4*4)*4, h/(4*4)*4).RemoveGrain (4, -1)
- dark_mask = c_lp.mt_lut ("700 x 16 * -")
- dark_mask = dark_mask.BicubicResize (w, h, 1, 0)
- cont_mask = Dither_build_gf3_range_mask (4)
- cont_mask = cont_mask.mt_lut ("255 x 15 - 1 max 2 ^ /")
- cont_mask = cont_mask.RemoveGrain (20, -1)
- nflt_mask = mt_logic (dark_mask, cont_mask, mode="min")
- c_keepnoise = Dither_merge16_8 (c_nofilt, c_filt, filt_mask, luma=true)
- c_nflt_dark = Dither_merge16_8 (c_filt, c_nofilt, nflt_mask, luma=true)
- c_filt
- ReplaceFramesSimple_oor (c_keepnoise, mappings=keepnoise_str)
- ReplaceFramesSimple_oor (c_nflt_dark, mappings=keepdark_str)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Levels
- #c_lev = Dither_convert_yuv_to_rgb (matrix="601", chromak="spline36", output="rgb48y")
- #c_lev = c_lev.Dither_lut16 ("x 5120 - 60160 / 0 max 0.95 ^ 65280 *", y=3, u=1, v=1)
- #c_lev = Dither_convert_rgb_to_yuv (
- #\ c_lev.SelectEvery (3, 0),
- #\ c_lev.SelectEvery (3, 1),
- #\ c_lev.SelectEvery (3, 2),
- #\ matrix="601", chromak="spline36", lsb=true
- #\ )
- c_lev = Dither_lut16 ("x 33 256 * - 202 256 * / 0 max 0.95 ^ 219 256 * * 16 256 * +", y=3, u=2, v=2)
- ReplaceFramesSimple_oor (c_lev, mappings=levels_str)
- (lossless16 && compa == 0) ? last : DitherPost ()
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- #vm = vm.mt_lut ("x 4 *")
- #vm.GreyScale ().Levels (0, 1, 255, 16, 235)
- #denoised
- #c_ana
- #c_org
- #c_shrp
- #dh_mask.GreyScale ().Levels (0, 1, 255, 16, 235)
- #dh_src
- #filt_mask.GreyScale ().Levels (0, 1, 255, 16, 235)
- #nflt_mask.GreyScale ().Levels (0, 1, 255, 16, 235)
- (compa == 1) ? Interleave (c_pass1.Subtitle ("o"), last.Subtitle ("f")) : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Function ReplaceFramesSimple_oor (clip base, clip src, string "filename", string "mappings", int "maxtime")
- {
- maxtime = Default (maxtime, 30) # Minutes
- lsec = Int (base.FrameRate () * maxtime * 60)
- len = base.FrameCount ()
- ladd = Max (lsec - len, 0)
- base = base + base.BlankClip (length=ladd)
- src = src + src.BlankClip (length=ladd)
- base.ReplaceFramesSimple (src, filename=filename, mappings=mappings)
- Trim (0, -len)
- }
- ______________________________________________________________________________
- pass6.avsi
- ______________________________________________________________________________
- ###
- ### Pass 6
- ### Anti-aliasing
- ### Dehaloing, 2nd pass
- ### Mosquito noise removal on static credits
- ### Ringing removal on frame border
- ### Derainbowing 2nd pass
- ### Cropping
- ### Spot removal
- ### Frame freezing
- ###
- # ep_str must be defined at this point.
- SetMemoryMax (960)
- SetMTMode (3, 2)
- Import ("cut.avsi")
- Import ("merge-seg.avsi")
- #(seg_str == "")
- #\ ? fslg_cat_seg_undet_end (ep_str, "2", 0, threads=3)
- #\ : fslg_load_seg (ep_str, "2", seg_str, 24*60*1, threads=3)
- #
- #c_pass1 = last
- (seg_str == "")
- \ ? fslg_cat_seg_undet_end (ep_str, "5", 0, threads=3, ext=".avi")
- \ : fslg_load_seg (ep_str, "5", seg_str, 24*60*1, threads=3, ext=".avi")
- ##################################################
- croponly = false # To output quickly a despot reference clip
- lossless16 = true # If pass 4 is 16 bits
- ll16out = true # Pass 5 storage
- ##################################################
- SetMTMode (2)
- c_org = last
- dithermode = (ll16out) ? -1 : 0
- (lossless16) ? DitherPost (mode=dithermode) : last
- w = Width ()
- h = Height ()
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Anti-aliasing
- c_x2 = Spline36Resize (w, h * 2, 0, 0.25)
- c_x2_nn = c_x2.Santiag (type="nnedi3", strv=1, threads=1)
- c_aa_ee = c_x2.Santiag (type="eedi2", strv=1)
- c_aa_cs = c_aa_ee.ContraSharpen (c_x2_nn)
- c_aa_cs = c_aa_cs.ReplaceFramesSimple_oor (c_x2_nn, mappings=aannedi3_str)
- c_aa = c_aa_cs.Spline36Resize (w, h, 0, -0.5)
- m_aa = c_aa.mt_edge (mode="prewitt", thY1=16, thY2=255)
- m_aa = m_aa.mt_expand ().RemoveGrain (20, -1)
- (croponly) ? last : mt_merge (last, c_aa, m_aa, luma=true)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Dehaloing
- # Light version
- pre_deh = last
- c_deh = FineDehalo (rx=2, ry=2, thmi=60, thma=100, thlimi=40, thlima=80, brightstr=0.5, darkstr=0.25, contra=0.5, edgeproc=0.35, showmask=0)
- c_deh.ReplaceFramesSimple_oor (last, mappings=nodh_str+" "+nosharp_str)
- c_deh = last
- (croponly) ? pre_deh : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Mosquito noise + Dirty fades
- cred_mask = detect_credits ()
- cred_mask = cred_mask.RemoveGrain (20, -1).RemoveGrain (20, -1)
- all_clean = frfun7 (1.3, 8, 0)
- cred_clean = mt_merge (last, all_clean, cred_mask, luma=true)
- (croponly) ? last : ReplaceFramesSimple_oor (cred_clean, mappings=credmosquito_str)
- (croponly) ? last : ReplaceFramesSimple_oor (all_clean, mappings=dirtyfade_str)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Ringing
- border_mask = mt_lutspa (mode="absolute", expr="x 14 == 120 x 16 == 136 128 ? ?")
- border_fixed = mt_lutxy (border_mask, expr="x y 128 / * round 1 254 clip", y=3, u=2, v=2)
- (croponly) ? last : ReplaceFramesSimple_oor (border_fixed, mappings=borderfix_str)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Rainbows
- c_derainbow = last.ChubbyRain2mod (th=8, show=false)
- (croponly) ? last : ReplaceFramesSimple_oor (c_derainbow, mappings=derainbow_str)
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Crop
- c_crop10 = Crop (10, 0, -6, 0)
- c_crop12 = Crop (12, 0, -4, 0)
- Crop ( 8, 0, -8, 0)
- ReplaceFramesSimple_oor (c_crop10, mappings=crop10_str)
- ReplaceFramesSimple_oor (c_crop12, mappings=crop12_str)
- # No need for Dither_crop16() as we don't crop vertically.
- c_16 = (ll16out && ! croponly) ? c_org.Crop ( 8, 0, -8, 0) : last
- c_16 = (ll16out && ! croponly) ? c_16.ReplaceFramesSimple_oor (c_org.Crop (10, 0, -6, 0), mappings=crop10_str) : last
- c_16 = (ll16out && ! croponly) ? c_16.ReplaceFramesSimple_oor (c_org.Crop (12, 0, -4, 0), mappings=crop12_str) : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Spots
- # Design failure: should have been before cropping (more practical)
- c_predespot = last
- spot_mask = mt_lut ("16", y=-16, u=-128, v=-128)
- spot_mask = spot_mask.TextSub ("ep-"+ep_str+"-despot-mask.ass")
- spot_mask = spot_mask.mt_lut ("x 16 - 219 / 255 *")
- spot_mask = spot_mask.RemoveGrain (20, -1)
- SetMTMode (5)
- super = MSuper (pel=1)
- super = super.RequestLinear ()
- vb4 = super.MAnalyse (isb=true, delta=4, blksize=16, overlap=8)
- vb2 = super.MAnalyse (isb=true, delta=2, blksize=16, overlap=8)
- vb1 = super.MAnalyse (isb=true, delta=1, blksize=16, overlap=8)
- vf1 = super.MAnalyse (isb=false, delta=1, blksize=16, overlap=8)
- vf2 = super.MAnalyse (isb=false, delta=2, blksize=16, overlap=8)
- vf4 = super.MAnalyse (isb=false, delta=4, blksize=16, overlap=8)
- cb4 = MCompensate (super, vb4, thSAD=2000)
- cb2 = MCompensate (super, vb2, thSAD=2000)
- cf2 = MCompensate (super, vf2, thSAD=2000)
- cf4 = MCompensate (super, vf4, thSAD=2000)
- SetMTMode (2)
- smoothed = last.MDegrain2 (super, vb1, vf1, vb2, vf2, thSAD=2000)
- despoted = Median2 (cb4, cb2, smoothed, cf2, cf4)
- ScriptClip ("""
- lumax = spot_mask.YPlaneMax ()
- (lumax >= 128) ? mt_merge (last, despoted, spot_mask, luma=true) : last
- """)
- (croponly) ? c_predespot : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- (ll16out && ! croponly) ? Dither_convert_8_to_16 () : last
- (ll16out && ! croponly) ? c_16.Dither_limit_dif16 (last, thr=1.0, elast=2.0) : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Freeze
- c_prefreeze = last
- Eval (frzfrm_str)
- (croponly) ? c_prefreeze : last
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- #c_x2
- #c_x2_nn.Spline36Resize (w, h, 0, -0.5)
- #c_aa_ee.Spline36Resize (w, h, 0, -0.5)
- #c_aa
- #mask_shrp.GreyScale ().Levels (0, 1, 255, 16, 235)
- #Interleave (c_pass1.Subtitle ("o"), pre_deh.Subtitle ("pre"), c_deh.Subtitle ("deh2"))
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- Function ReplaceFramesSimple_oor (clip base, clip src, string "filename", string "mappings", int "maxtime")
- {
- maxtime = Default (maxtime, 30) # Minutes
- lsec = Int (base.FrameRate () * maxtime * 60)
- len = base.FrameCount ()
- ladd = Max (lsec - len, 0)
- base = base + base.BlankClip (length=ladd)
- src = src + src.BlankClip (length=ladd)
- base.ReplaceFramesSimple (src, filename=filename, mappings=mappings)
- Trim (0, -len)
- }
- # Almost the same functions as in pass 0
- Function detect_credits (clip src)
- {
- src
- tst = last.TemporalSoften (7, 32, 255, 255)
- highc = tst.mt_edge (mode="min/max", thY1=0, thY2=255)
- small = highc.mt_lut ("x 160 - 8 *")
- big = tst.remove_rdc_mask_ed (highc)
- rdc_cm = mt_hysteresis (small, big, u=-128, v=-128)
- rdc_cm.GreyScale ()
- }
- Function remove_rdc_mask_ed (clip tst, clip highc)
- {
- highc2 = highc.mt_lut ("x 128 - 8 *")
- white = tst.mt_lut ("x 192 - 8 *")
- white = white.mt_expand_multi (sw=3, sh=3, mode="ellipse")
- white = white.PointResize (white.Width (), white.Height (), -2, -2)
- white = white.mt_binarize ()
- sub = mt_lutxy (
- \ tst.PointResize (tst.Width (), tst.Height (), -1, -1),
- \ tst.PointResize (tst.Width (), tst.Height (), 1, 1),
- \ expr="x y - 16 - 128 > 255 0 ?"
- \ )
- sub = sub.mt_expand_multi (sw=10, sh=10)
- highc2 = highc2.mt_expand ().mt_binarize ()
- big = mt_logic (white, sub, mode="max")
- big = mt_logic (big, highc2, mode="max")
- big
- }
- Function FreezeN1 (clip src, int f)
- {
- return (src.FreezeFrame (f, f, f + 1))
- }
- Function FreezeP1 (clip src, int f)
- {
- return (src.FreezeFrame (f, f, f - 1))
- }
- Function FreezeN2 (clip src, int f)
- {
- return (src.FreezeFrame (f, f + 1, f + 2))
- }
- Function FreezeN3 (clip src, int f)
- {
- return (src.FreezeFrame (f, f + 2, f + 3))
- }
- Function FreezePN (clip src, int f)
- {
- return (src.FreezeFrame (f - 1, f + 1, f))
- }
- ______________________________________________________________________________
- cut.avsi
- ______________________________________________________________________________
- # ep_str must be defined at this point.
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pass 0
- cut_str =
- \ (ep_str == "01") ? "Dissolve (cut_clip (52050, 52050+2640+16), cut_clip (2640, 51958), 16)"
- \ : (ep_str == "02") ? "cut_clip ( 52050, 103858)"
- \ : (ep_str == "OP") ? "cut_clip (103894, 106543)"
- \ : (ep_str == "ED") ? "cut_clip (106570, 109018)"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- cutaudio_str = (ep_str == "01") ? "cut_clip (0, 51958)" : cut_str
- Function cut_clip (clip src, int frame_beg, int frame_end)
- {
- src
- Trim (frame_beg, frame_beg - frame_end)
- }
- # 30 fps, after cut
- # TComb bypass (artifacts)
- notcomb_str =
- \ (ep_str == "01") ? "[34780 35059]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 30 fps, after cut
- # Credits to derainbow with stronger settings
- op_str =
- \ (ep_str == "01") ? "[270 2259]"
- \ : (ep_str == "02") ? "[270 2259]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- ed_str =
- \ (ep_str == "01") ? "[49400 51957]"
- \ : (ep_str == "02") ? "[49125 51794]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pass 2
- # 24 fps
- # Frames to process with a regular IVTC (no real blending)
- stdivtc_str =
- \ (ep_str == "01") ? "[0 2267]"
- \ : (ep_str == "02") ? "[0 39231]"
- \ : (ep_str == "OP") ? "[0 2118]"
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames showing minor residual combing after IVTC/deblending, needing an additional Vinverse
- comb_str =
- \ (ep_str == "01") ? """
- [14538 14705] [20165 20331]
- 26593 26682 [27166 27197] [33143 33278] [37180 37354] [37753 38040] [38137 38267] 40070
- """
- \ : (ep_str == "02") ? """
- 2317 2381 2925 [27238 27239]
- """
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Bypass the detail exclusion mask.
- disexmask_str =
- \ (ep_str == "01") ? """
- [1060 1142]
- [2268 41565]
- """
- \ : (ep_str == "02") ? """
- [1060 1142] [13139 13202] [2983 3032] [3189 3207] [4184 4479] [9753 9757] [12222 12222]
- [13707 13814] [18332 18344] [18772 18797] [19170 19289] [30648 30720] [30913 31008] [31083 31176]
- [36357 36362] [37775 37809]
- """
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Force auto smoothing (AA + Vinverse) on any motion
- forceaa_str =
- \ (ep_str == "01") ? """
- [2268 21484] [21555 41565]
- """
- \ : (ep_str == "02") ? """
- [5830 6032] [6215 6245] [9753 9757] [10493 10558] [11245 11364]
- [15873 15943]
- [16293 16436] [16500 16660] [18332 18344] [18772 18797] [28813 28814]
- [30648 30720] [30913 31008] [33632 33812] [36357 36362] [39936 39936]
- """
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? "[0 1957]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Disable AA but possibly keep Vinverse
- disableaa_str =
- \ (ep_str == "01") ? """
- [14706 14913] [20165 20331] [21423 21554] [21687 21806]
- """
- \ : (ep_str == "02") ? "[29683 29712]"
- \ : (ep_str == "OP") ? "[0 2118]"
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Lessen the motion detection system for AA
- lessmoaa_str =
- \ (ep_str == "01") ? "[988 998] [1064 1143] [2112 20142] [20248 41565]"
- \ : (ep_str == "02") ? "[988 998] [1064 1143]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Disable Vinverse
- disablevi_str =
- \ (ep_str == "01") ? "[21485 21554]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? "[0 2118]"
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pass 3
- # 24 fps
- # Spatial edge denoising
- spden_str =
- \ (ep_str == "01") ? "[4017 4088] [5537 5652] [14538 14924] [30603 30731] [31448 31593]"
- \ : (ep_str == "02") ? "[13892 13906] [30481 30542] [30649 30720]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # No dehalo
- nodh_str =
- \ (ep_str == "01") ? "[39523 40066] [40329 40499] [40775 41091] [41198 41565]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Light dehalo only
- lightdh_str =
- \ (ep_str == "01") ? ""
- \ : (ep_str == "02") ? "[2112 39231]"
- \ : (ep_str == "OP") ? "[0 2118]"
- \ : (ep_str == "ED") ? "[0 1957]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pass 5
- # 24 fps
- # No sharpening
- nosharp_str =
- \ (ep_str == "01") ? "[4017 4088] [5537 5644] [14538 14924] [30603 30722] [31448 31591]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames to filter with a low temporal radius.
- lowtr_str =
- \ (ep_str == "01") ? "[1283 1330]"
- \ : (ep_str == "02") ? "[1283 1330] [3420 4715]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? "[1082 1191]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Background in motion where texture is lost by filtering.
- # A voir: EP01 [14706 14924]
- keepnoise_str =
- \ (ep_str == "01") ? """
- [3621 3799] [20248 20330] [21423 21686] [26749 26849] [27827 28040]
- [36745 37094] [40555 40662]
- """
- \ : (ep_str == "02") ? "[37775 37809] [40333 40445]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? "[1083 1197]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames with important things hidden in dark area lost by filtering.
- # Warning: very slow processing here (30s per frame) for some reason.
- keepdark_str =
- \ (ep_str == "01") ? "[37753 38040]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames with black level set to 20 (RGB), needing to be fixed
- levels_str =
- \ (ep_str == "01") ? "[0 2124] [25712 26573]"
- \ : (ep_str == "02") ? "[0 41445]"
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- # Pass 6
- # 24 fps
- # Dirty fades
- dirtyfade_str =
- \ (ep_str == "01") ? "[1262 1282] [39496 39523] [39551 39576] [39605 39702] [40527 40541] [41156 41186]"
- \ : (ep_str == "02") ? "[1262 1282] [39275 39301] [39330 39355] [39384 39481] [40306 40320] [40935 40965]"
- \ : (ep_str == "OP") ? "[1260 1279]"
- \ : (ep_str == "ED") ? "[24 51] [79 104] [133 220] [1055 1082] [1684 1719]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Mosquito noise on the credits
- credmosquito_str =
- \ (ep_str == "01") ? """
- [39530 39622] [39730 39879] [39930 40039] [40335 40494]
- [40579 40705] [40815 40943] [40990 41078] [41227 41322]
- """
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames needing additional, strong derainbowing
- derainbow_str =
- \ (ep_str == "01") ? "[2638 2773] [3148 3250] [27827 28041] [28660 28779] [37879 38040]"
- \ : (ep_str == "02") ? """
- [9438 9641] [9768 11046] [11266 11292] [11606 11822] [11948 12034]
- [13708 13815] [15275 15398] [16294 16437] [17375 17494] [18039 18085]
- [18799 18805] [19171 19290] [20945 21142] [21698 21913] [24855 25032]
- [28545 28691]
- """
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames where eedi2 based AA is plain wrong
- aannedi3_str =
- \ (ep_str == "01") ? "[27720 28034]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames where the ringing border has to be fixed
- borderfix_str =
- \ (ep_str == "01") ? "[39473 41565]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? "[0 1957]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames to crop to 10 or 12 pixels instead of 8
- crop10_str =
- \ (ep_str == "01") ? "[2112 5536] [5645 8470] [14255 25311] [27724 39472]"
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? ""
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- crop12_str =
- \ (ep_str == "01") ? """
- [5537 5644] [8471 10432] [10758 10894] [11404 12904] [13000 14254]
- [25312 25702] [26574 27723] [37753 39472] [39473 41565]
- """
- \ : (ep_str == "02") ? ""
- \ : (ep_str == "OP") ? ""
- \ : (ep_str == "ED") ? "[0 1957]"
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # 24 fps
- # Frames to freeze
- frzfrm_str =
- \ (ep_str == "01") ? """
- FreezeN1 ( 563)
- FreezeN1 ( 580)
- FreezeN1 ( 1012)
- FreezeN1 ( 1027)
- FreezeN1 ( 1214)
- FreezeN2 ( 1237)
- FreezeN2 ( 2269)
- FreezeN2 ( 2774)
- FreezeN2 ( 2955)
- FreezeN2 ( 3051)
- FreezeN1 ( 3148)
- FreezeN2 ( 3251)
- FreezeN2 ( 3808)
- FreezeN1 ( 3925)
- FreezeN1 ( 4089)
- FreezeN2 ( 4164)
- FreezeN2 ( 4336)
- FreezeN2 ( 4375)
- FreezeN2 ( 4564)
- FreezeN2 ( 4625)
- FreezeN1 ( 4853)
- FreezeN2 ( 6573)
- FreezeN2 ( 7019)
- FreezeN2 ( 9706)
- FreezeN1 (10758)
- FreezeN2 (11476)
- FreezeP1 (11523)
- FreezeN1 (11524)
- FreezeN1 (11789)
- FreezeN2 (11954)
- FreezeN2 (12038)
- FreezeN2 (12089)
- FreezeN2 (12149)
- FreezeN2 (12305)
- FreezeN2 (13933)
- FreezeN2 (14053)
- FreezeN2 (14925)
- FreezeN2 (15141)
- FreezeP1 (15407)
- FreezeN2 (15577)
- FreezeN2 (16342)
- FreezeN2 (16426)
- FreezeN2 (16540)
- FreezeN2 (16900)
- FreezeP1 (16973)
- FreezeN1 (17500)
- FreezeN1 (17548)
- FreezeN1 (17599)
- FreezeN2 (17647)
- FreezePN (17792)
- FreezeN2 (17804)
- FreezeN2 (17864)
- FreezeN2 (18044)
- FreezeN2 (18146)
- FreezeN2 (18230)
- FreezeN2 (18398)
- FreezeN2 (18458)
- FreezeN2 (19010)
- FreezeN2 (19094)
- FreezeN2 (19255)
- FreezeN1 (19514)
- FreezeN2 (19569)
- FreezeN2 (19839)
- FreezeN1 (19911)
- FreezeN2 (20011)
- FreezeN2 (21072)
- FreezeN2 (21366)
- FreezeN2 (22377)
- FreezeN2 (23373)
- FreezeN2 (23517)
- FreezeP1 (23578)
- FreezeN2 (24046)
- FreezeN2 (24226)
- FreezeN2 (24262)
- FreezeN2 (24286)
- FreezeN2 (24886)
- FreezeN2 (24988)
- FreezeN2 (25144)
- FreezeN2 (25312)
- FreezeN2 (28102)
- FreezeN2 (28462)
- FreezeN2 (28498)
- FreezeN2 (28780)
- FreezeN1 (28801)
- FreezeN2 (28873)
- FreezeN2 (29137)
- FreezeN2 (29212)
- FreezeN1 (29428)
- FreezeN1 (29477)
- FreezeN1 (29660)
- FreezeN2 (29912)
- FreezeN2 (30032)
- FreezePN (30202)
- FreezeN2 (30309)
- FreezeN1 (30603)
- FreezeN2 (31640)
- FreezeN2 (31856)
- FreezeN2 (32053)
- FreezeN2 (32089)
- FreezePN (32164)
- FreezeN1 (32235)
- FreezeN2 (32427)
- FreezeN2 (32501)
- FreezeN2 (32561)
- FreezeN2 (32633)
- FreezeN1 (32753)
- FreezePN (32898)
- FreezeN1 (32920)
- FreezeN2 (32992)
- FreezeN2 (33625)
- FreezeP1 (33792)
- FreezeN2 (33793)
- FreezeN2 (33916)
- FreezeN2 (34180)
- FreezeN2 (34618)
- FreezeN1 (34764)
- FreezeN2 (35398)
- FreezeN2 (35509)
- FreezeN2 (35797)
- FreezeN2 (35977)
- FreezeN2 (36181)
- FreezeN2 (36361)
- FreezeN2 (38268)
- FreezeN2 (38461)
- FreezeN2 (38581)
- FreezeN2 (38845)
- FreezeN2 (38942)
- FreezeN2 (39110)
- FreezeN2 (40110)
- FreezeN2 (40146)
- FreezeN1 (40179)
- FreezeP1 (40234)
- FreezeN2 (40235)
- """
- \ : (ep_str == "02") ? """
- FreezeN1 ( 563)
- FreezeN1 ( 580)
- FreezeN1 ( 1012)
- FreezeN1 ( 1027)
- FreezeN1 ( 1214)
- FreezeN2 ( 1237)
- FreezeN1 ( 1283)
- FreezeN1 (39925)
- FreezeN1 (39958)
- FreezeN1 (39973)
- FreezeN1 (40014)
- """
- \ : (ep_str == "OP") ? """
- FreezeN1 ( 578)
- FreezeN2 ( 1010)
- FreezeN1 ( 1027)
- FreezeN2 ( 1154)
- FreezeN2 ( 1212)
- FreezeN2 ( 1235)
- FreezeN3 ( 1280)
- FreezeN2 ( 1570)
- FreezeN3 ( 1696)
- FreezeN3 ( 1828)
- """
- \ : (ep_str == "ED") ? """
- FreezeN2 ( 638)
- FreezeN2 ( 674)
- FreezeN1 ( 707)
- FreezeN1 ( 722)
- FreezeP1 ( 762)
- FreezeN2 ( 763)
- """
- \ : "Throw ("+chr(34)+"Unexpected ep_str value."+chr(34)+")"
- # - - - - - - - - - - - - - - - - - - - - - - - - - -
- ______________________________________________________________________________
- merge-seg.avsi
- ______________________________________________________________________________
- Function fslg_cat_seg (string ep_str, string pass_str, int seg_index_beg, int seg_index_end, string "path", int "threads", string "ext", int "fps_num", int "fps_den")
- {
- ext = Default (ext, ".mp4")
- path = Default (path, "")
- path = (path != "" && LeftStr (path, 1) != "\") ? path + "\" : path
- fs = "%02.0f"
- seg_str = String (seg_index_beg, fs)
- this_seg = FFVideoSource (path+"ep-"+ep_str+"-p"+pass_str+"-"+seg_str+ext, threads=threads)
- this_seg = this_seg.fslg_assume_fps_cond (fps_num, fps_den)
- (seg_index_beg + 1 < seg_index_end)
- \ ? this_seg + fslg_cat_seg (ep_str, pass_str, seg_index_beg + 1, seg_index_end, path=path, ext=ext, fps_num=fps_num, fps_den=fps_den)
- \ : this_seg
- return (last)
- }
- Function fslg_cat_seg_undet_end (string ep_str, string pass_str, int seg_index_beg, string "path", int "threads", string "ext", int "fps_num", int "fps_den")
- {
- ext = Default (ext, ".mp4")
- path = Default (path, "")
- path = (path != "" && LeftStr (path, 1) != "\") ? path + "\" : path
- fs = "%02.0f"
- seg_str = String (seg_index_beg, fs)
- c = fslg_load_seg_internal (path+"ep-"+ep_str+"-p"+pass_str+"-"+seg_str+ext)
- c = c.IsClip () ? c.fslg_assume_fps_cond (fps_num, fps_den) : c
- d = c.IsClip () ? fslg_cat_seg_undet_end (ep_str, pass_str, seg_index_beg + 1, path=path, ext=ext, fps_num=fps_num, fps_den=fps_den) : ""
- e = d.IsClip () ? c + d : c
- return (e)
- }
- Function fslg_load_seg (string ep_str, string pass_str, string seg_str, int seg_len, string "path", int "threads", string "ext", int "fps_num", int "fps_den")
- {
- ext = Default (ext, ".mp4")
- path = Default (path, "")
- path = (path != "" && LeftStr (path, 1) != "\") ? path + "\" : path
- seg_nbr = Int (Value (seg_str))
- seg_str_len = StrLen (seg_str)
- fs = "%0" + String (seg_str_len) + ".0f"
- seg_pre_str = String (seg_nbr - 1, fs)
- seg_nxt_str = String (seg_nbr + 1, fs)
- seg_main = FFVideoSource (path+"ep-"+ep_str+"-p"+pass_str+"-"+seg_str+ext, threads=threads)
- seg_main = seg_main.fslg_assume_fps_cond (fps_num, fps_den)
- seg = (seg_nbr > 0) ? FFVideoSource (path+"ep-"+ep_str+"-p"+pass_str+"-"+seg_pre_str+ext, threads=threads).fslg_assume_fps_cond (fps_num, fps_den) + seg_main : seg_main
- seg = (seg_nbr > 1) ? seg.BlankClip (length=seg_len*(seg_nbr-1), fps=fps_num, fps_denominator=fps_den) + seg : seg
- seg_next = fslg_load_seg_internal (path+"ep-"+ep_str+"-p"+pass_str+"-"+seg_nxt_str+ext)
- Assert ((! seg_next.IsClip () || seg_len == seg_main.FrameCount ()),
- \ "fslg_load_seg: wrong number of frames.")
- seg_next.IsClip () ? seg + seg_next.fslg_assume_fps_cond (fps_num, fps_den) : seg
- }
- Function fslg_load_seg_internal (string filename, int "threads")
- {
- Exist (filename) ? FFVideoSource (filename, threads=threads) : ""
- }
- Function fslg_assume_fps_cond (clip src, int "fps_num", int "fps_den")
- {
- src
- (Defined (fps_num)) ? AssumeFPS (fps_num, fps_den) : last
- }
- Function fslg_load_whole_video (string ep_str, string pass_str, string "path", int "threads", string "ext", int "fps_num", int "fps_den")
- {
- ext = Default (ext, ".mp4")
- path = Default (path, "")
- path = (path != "" && LeftStr (path, 1) != "\") ? path + "\" : path
- filename = path + "ep-" + ep_str + "-p" + pass_str + ext
- Exist (filename)
- \ ? FFVideoSource (filename, threads=threads).fslg_assume_fps_cond (fps_num, fps_den)
- \ : fslg_cat_seg_undet_end (ep_str, pass_str, 0, path=path, threads=threads, ext=ext, fps_num=fps_num, fps_den=fps_den)
- }
- ______________________________________________________________________________
- fslg-denoise.avsi
- ______________________________________________________________________________
- Function fslg_make_search_clip (clip o, int "sigma", int "lamt", int "spatsmooth", bool "edgesmooth", float "spatsigma", int "rad", int "blksize", int "overlap", int "sad", int "threads", int "pel", bool "lcurve")
- {
- sigma = Default (sigma, 32)
- lamt = Default (lamt, 1)
- spatsmooth = Default (spatsmooth, 0) # 1 or 2 for pretty grainy source.
- edgesmooth = Default (edgesmooth, true)
- spatsigma = Default (spatsigma, 16)
- rad = Default (rad, 6)
- blksize = Default (blksize, 16)
- overlap = Default (overlap, blksize/2)
- sad = Default (sad, 400)
- pel = Default (pel, 4)
- lcurve = Default (lcurve, true)
- rmax = 7
- Assert ((rad <= rmax), "rad value is too high.")
- o
- w = Width ()
- h = Height ()
- low = o.bicubicresize(w/(10*4)*4,h/(10*4)*4).bicubicresize(w*3/(10*4)*4,h*3/(10*4)*4,1,0).bicubicresize(w,h,1,0)
- ldif = mt_makediff (o, low)
- ldif = ldif.mt_lut ("x "+String(128-lamt)+" "+String(128+lamt)+" clip")
- mt_adddiff (o, ldif, y=3, u=2, v=2) # mt_lutxy(o,low,"x y < x 1 - x y > x 1 + x ? ?",U=2,V=2)
- (spatsmooth >= 1) ? Merge (RemoveGrain (11), last) : last
- (spatsmooth >= 2) ? Merge (RemoveGrain (11), last) : last
- (edgesmooth) ? mt_merge (
- \ last,
- \ RemoveGrain (11, -1).RemoveGrain (20, -1),
- \ mt_edge (mode="prewitt", thY1=0, thY2=255).RemoveGrain (20, -1).mt_lut ("x 64 - 4 *").RemoveGrain (20, -1),
- \ y=3, u=2, v=2
- \ ) : last
- sss = String (spatsigma)
- ssxy = "0.0:0.0 0.15:0.0 0.25:" + sss + " 1.0:" + sss
- dfttest (sigma=spatsigma, tbsize=1, sbsize=16, sosize=12, threads=threads, ssx=ssxy, ssy=ssxy, quiet=true)
- x = last
- sup = MSuper (pel=pel)
- vec = sup.MAnalyse (multi=true, delta=rmax, blksize=blksize, overlap=overlap, search=5, searchparam=4, DCT=5, truemotion=false, global=true)
- bc1 = (rad >= 1) ? MCompensate (sup, vec.SelectEvery (rmax*2, 0), thSAD=sad) : last
- fc1 = (rad >= 1) ? MCompensate (sup, vec.SelectEvery (rmax*2, 1), thSAD=sad) : last
- bc2 = (rad >= 2) ? MCompensate (sup, vec.SelectEvery (rmax*2, 2), thSAD=sad) : last
- fc2 = (rad >= 2) ? MCompensate (sup, vec.SelectEvery (rmax*2, 3), thSAD=sad) : last
- bc3 = (rad >= 3) ? MCompensate (sup, vec.SelectEvery (rmax*2, 4), thSAD=sad) : last
- fc3 = (rad >= 3) ? MCompensate (sup, vec.SelectEvery (rmax*2, 5), thSAD=sad) : last
- bc4 = (rad >= 4) ? MCompensate (sup, vec.SelectEvery (rmax*2, 6), thSAD=sad) : last
- fc4 = (rad >= 4) ? MCompensate (sup, vec.SelectEvery (rmax*2, 7), thSAD=sad) : last
- bc5 = (rad >= 5) ? MCompensate (sup, vec.SelectEvery (rmax*2, 8), thSAD=sad) : last
- fc5 = (rad >= 5) ? MCompensate (sup, vec.SelectEvery (rmax*2, 9), thSAD=sad) : last
- bc6 = (rad >= 6) ? MCompensate (sup, vec.SelectEvery (rmax*2, 10), thSAD=sad) : last
- fc6 = (rad >= 6) ? MCompensate (sup, vec.SelectEvery (rmax*2, 11), thSAD=sad) : last
- bc7 = (rad >= 7) ? MCompensate (sup, vec.SelectEvery (rmax*2, 12), thSAD=sad) : last
- fc7 = (rad >= 7) ? MCompensate (sup, vec.SelectEvery (rmax*2, 13), thSAD=sad) : last
- Interleave (fc7, fc6, fc5, fc4, fc3, fc2, fc1, last, bc1, bc2, bc3, bc4, bc5, bc6, bc7)
- dfttest (sigma=sigma, tbsize=rad*2+1, sbsize=16, sosize=12, threads=threads, lsb=lcurve)
- SelectEvery (rmax*2+1, rmax)
- (lcurve) ? fslg_remap_luma_search_clip () : last
- (lcurve) ? DitherPost (mode=-1) : last
- }
- # spa_more = src8.Vinverse ().dfttest (sigma=32, tbsize=1, lsb=true, threads=threads)
- # ssxy = "0.00:64.0 0.25:256.0 0.35:256.0 0.40:4.0 1.00:0.0"
- # spa_strong = src8.Vinverse ().dfttest (sigma=256, ssx=ssxy, ssy=ssxy, tbsize=1, sbsize=16, sosize=12, threads=threads, dither=1, quiet=true).Deblock_QED (40, 40).Dither_convert_8_to_16()
- # No need to provide sclip if vec is provided
- # No need to provide tclip if sup is provided
- Function flsg_denoise (clip src8, clip "sclip", clip "tclip", clip "sup", clip "vec", int "rad", int "pel", int "blksize", int "overlap", int "sad", float "scoef", bool "csall", bool "csspat", float "ss1", float "ss2", float "ss3", bool "twice", int "threads", clip "spa_more", string "fltmore_str", string "fltmoremask_str", clip "spa_strong", string "fltstrong_str")
- {
- rad = Default (rad, 6)
- pel = Default (pel, 4)
- sad = Default (sad, 64) # 80
- scoef = Default (scoef, 1.0) # 0.75
- csall = Default (csall, false)
- csspat = Default (csspat, true)
- ss1 = Default (ss1, 1.0)
- ss2 = Default (ss2, 4.0)
- ss3 = Default (ss3, 12.0)
- sclip = Default (sclip, src8)
- tclip = Default (tclip, src8)
- twice = Default (twice, false)
- Assert (! Defined (vec) || vec.FrameCount () == 2 * rad * sclip.FrameCount (),
- \ "vec length and rad value are not consistent.")
- spamore_flag = (Defined (spa_more) && Defined (fltmore_str ) && fltmore_str != "")
- spastrg_flag = (Defined (spa_strong) && Defined (fltstrong_str) && fltstrong_str != "")
- spamix_str = (Defined (fltmore_str ) ? fltmore_str : "")
- \ + (Defined (fltstrong_str) ? (" " + fltstrong_str) : "")
- moremask_flag = (Defined (spa_more) && Defined (fltmoremask_str) && fltmoremask_str != "")
- src8
- vec = (Defined (vec)) ? vec : sclip.fslg_gen_vect (pel, rad, blksize=blksize, overlap=overlap)
- sup = (Defined (sup)) ? sup : tclip.MSuper (pel=pel, levels=1)
- deg16 = last.fslg_filter_mdegrain (sup, vec, rad, sad)
- deg8a = (twice) ? deg16.DitherPost (mode=6) : deg16.DitherPost (mode=-1)
- sup2 = (twice) ? deg8a.MSuper (pel=pel, levels=1) : NOP ()
- deg16 = (twice) ? deg8a.fslg_filter_mdegrain (sup2, vec, rad, sad) : deg16
- vb1 = vec.SelectEvery (rad*2, 0)
- vf1 = vec.SelectEvery (rad*2, 1)
- vmb1 = MMask (vb1, kind=1, ml=100.0*sad*scoef/400.0, gamma=3.0, Ysc=255)
- vmf1 = MMask (vf1, kind=1, ml=100.0*sad*scoef/400.0, gamma=3.0, Ysc=255)
- vmmi = mt_logic (vmb1, vmf1, mode="min")
- vmma = mt_logic (vmb1, vmf1, mode="max")
- edgemask = (moremask_flag) ? deg8a.mt_edge (mode="min/max", thY1=0, thY2=255) : NOP ()
- edgemask = (moremask_flag) ? edgemask.mt_lut ("x 16 - 32 *") : NOP ()
- edgemask = (moremask_flag) ? mt_expand_multi (sw=8, sh=8, mode="ellipse") : NOP ()
- edgemask = (moremask_flag) ? edgemask.RemoveGrain (20, -1) : NOP ()
- spa_normal = flsg_select_filter_with_luma (deg16, src8, ss1, ss2, ss3, threads=threads)
- spa_masked = (moremask_flag) ? Dither_merge16_8 (spa_normal, spa_more, edgemask, luma=true) : NOP ()
- spa_more = (moremask_flag) ? spa_more.ReplaceFramesSimple_oor (spa_masked, mappings=fltmoremask_str) : NOP ()
- spa = spa_normal
- spa = (spamore_flag) ? spa.ReplaceFramesSimple_oor (spa_more, mappings=fltmore_str) : spa
- spa = (spastrg_flag) ? spa.ReplaceFramesSimple_oor (spa_strong, mappings=fltstrong_str) : spa
- # Contrasharpening (spatial only)
- spa8 = (csspat && ! csall) ? spa.DitherPost (mode=-1) : NOP ()
- csdif8 = (csspat && ! csall) ? spa8.ContraSharpen_dif (src8, dif=true) : NOP ()
- csdif = (csspat && ! csall) ? csdif8.Dither_convert_8_to_16 () : NOP ()
- spa = (csspat && ! csall) ? spa.Dither_add16 (csdif, y=3, u=2, v=2, dif=true) : spa
- vm = vmmi.ReplaceFramesSimple_oor (vmma, mappings=spamix_str)
- Dither_merge16_8 (deg16, spa, vm, luma=true)
- # Contrasharpening (all)
- deg8 = (csall) ? DitherPost (mode=-1) : NOP ()
- csdif8 = (csall) ? deg8.ContraSharpen_dif (src8, dif=true) : NOP ()
- csdif = (csall) ? csdif8.Dither_convert_8_to_16 () : NOP ()
- (csall) ? Dither_add16 (csdif, y=3, u=2, v=2, dif=true) : last
- }
- Function fslg_gen_vect (clip sclip, int pel, int rad, int "blksize", int "overlap")
- {
- blksize = Default (blksize, 8)
- overlap = Default (overlap, blksize/2)
- sup_a = sclip.MSuper (pel=pel)
- sup_a.MAnalyse (multi=true, delta=rad, blksize=blksize, overlap=overlap)
- }
- Function fslg_filter_mdegrain (clip o, clip sup, clip vec, int rad, int sad)
- {
- o.MDegrainN (sup, vec, rad, thSAD=sad, thSAD2=sad/2, lsb=true)
- }
- Function fslg_filter_dfttest (clip o, clip sup, clip vec, int rad, int sad, int rmax, float sigma)
- {
- o
- bc1 = (rad >= 1) ? MCompensate (sup, vec.SelectEvery (rmax*2, 0), thSAD=sad) : last
- fc1 = (rad >= 1) ? MCompensate (sup, vec.SelectEvery (rmax*2, 1), thSAD=sad) : last
- bc2 = (rad >= 2) ? MCompensate (sup, vec.SelectEvery (rmax*2, 2), thSAD=sad) : last
- fc2 = (rad >= 2) ? MCompensate (sup, vec.SelectEvery (rmax*2, 3), thSAD=sad) : last
- bc3 = (rad >= 3) ? MCompensate (sup, vec.SelectEvery (rmax*2, 4), thSAD=sad) : last
- fc3 = (rad >= 3) ? MCompensate (sup, vec.SelectEvery (rmax*2, 5), thSAD=sad) : last
- bc4 = (rad >= 4) ? MCompensate (sup, vec.SelectEvery (rmax*2, 6), thSAD=sad) : last
- fc4 = (rad >= 4) ? MCompensate (sup, vec.SelectEvery (rmax*2, 7), thSAD=sad) : last
- bc5 = (rad >= 5) ? MCompensate (sup, vec.SelectEvery (rmax*2, 8), thSAD=sad) : last
- fc5 = (rad >= 5) ? MCompensate (sup, vec.SelectEvery (rmax*2, 9), thSAD=sad) : last
- bc6 = (rad >= 6) ? MCompensate (sup, vec.SelectEvery (rmax*2, 10), thSAD=sad) : last
- fc6 = (rad >= 6) ? MCompensate (sup, vec.SelectEvery (rmax*2, 11), thSAD=sad) : last
- bc7 = (rad >= 7) ? MCompensate (sup, vec.SelectEvery (rmax*2, 12), thSAD=sad) : last
- fc7 = (rad >= 7) ? MCompensate (sup, vec.SelectEvery (rmax*2, 13), thSAD=sad) : last
- Interleave (fc7, fc6, fc5, fc4, fc3, fc2, fc1, last, bc1, bc2, bc3, bc4, bc5, bc6, bc7)
- dfttest (sigma=sigma, tbsize=rad*2+1, sbsize=16, sosize=12, threads=threads)
- SelectEvery (rmax*2+1, rmax)
- }
- Function ContraSharpen_dif (clip NR2, clip o, bool "dif")
- {
- dif = Default (dif, false)
- s = NR2.ContraSharpen_MinBlur(1,1) # Damp down remaining spots of the denoised clip.
- allD = mt_makediff(o,NR2) # The difference achieved by the denoising.
- ssD = mt_makediff(s,s.removegrain(11,-1)) # The difference of a simple kernel blur.
- ssDD = ssD.repair(allD,1) # Limit the difference to the max of what the denoising removed locally.
- ssDD = ssDD.mt_lutxy(ssD,"x 128 - abs y 128 - abs < x y ?") # abs(diff) after limiting may not be bigger than before.
- (dif) ? ssDD : NR2.mt_adddiff(ssDD,U=2,V=2) # Apply the limited difference. (Sharpening is just inverse blurring.)
- }
- # The 16-bit clip is filtered, the 8-bit clip is only passed for mask calculation
- Function flsg_select_filter_with_luma (clip src16, clip src8, float ss1, float ss2, float ss3, int "threads")
- {
- flt_flag = (ss1 > 0 && ss2 > 0 && ss3 > 0)
- src8
- w = Width ()
- h = Height ()
- r = 6
- (flt_flag) ? BicubicResize (w / r / 4 * 4, h / r / 4 * 4) : NOP ()
- (flt_flag) ? BicubicResize (w, h, 1, 0) : NOP ()
- lvl1 = String (24)
- lvl2 = String (60)
- lvl3 = String (96)
- mask2 = (ss2 != ss1) ? mt_lut ("255 x "+lvl1+" - "+lvl2+" "+lvl1+" - * /") : NOP ()
- mask3 = (ss3 != ss2) ? mt_lut ("255 x "+lvl2+" - "+lvl3+" "+lvl2+" - * /") : NOP ()
- src16
- f1 = (ss1 > 0) ? dfttest (sigma=ss1, tbsize=1, lsb=true, lsb_in=true, threads=threads) : src16
- f2 = (ss2 > 0) ? dfttest (sigma=ss2, tbsize=1, lsb=true, lsb_in=true, threads=threads) : src16
- f3 = (ss3 > 0) ? dfttest (sigma=ss3, tbsize=1, lsb=true, lsb_in=true, threads=threads) : src16
- (ss2 != ss1) ? Dither_merge16_8 (f1, f2, mask2, luma=true) : f1
- (ss3 != ss2) ? Dither_merge16_8 (last, f3, mask3, luma=true) : last
- }
- # 16-bit TV-range -> full range with extra curvature
- # s0 = new slope at 0
- # c = length of the curved part, > 0, no specific unit
- #
- # Matlab code:
- # c = 1/16;
- # s0 = 2;
- # x = linspace (0, 1, 10001);
- # y1 = (x * 219 + 16) / 256; % Scale [0 ; 1]
- # t = ((y1*256 - 16) / 219);
- # k = (s0-1)*c;
- # y2 = ((1+c) - (1+c)*c ./ (t + c)) * k + t * (1 - k);
- # plot (x, y1, x, y2); grid on;
- Function fslg_remap_luma_search_clip (clip src, float "s0", float "c")
- {
- s0 = Default (s0, 2.0)
- c = Default (c, 1.0/16)
- k = (s0 - 1) * c
- t = "x 4096 - 56064 / 0 1 clip"
- e = String(k)+" "+String(1+c)+" "+String((1+c)*c)+" "+t+" "+String(c)+" + / - * "+t+" 1 "+String(k)+" - * + 65536 *"
- src.Dither_lut16 (
- \ yexpr=e,
- \ expr="x 32768 - 32768 * 28672 / 32768 +",
- \ y=3, u=3, v=3
- \ )
- }
- ______________________________________________________________________________
- ep-01-tfm-override.txt
- ______________________________________________________________________________
- 1362,1406 i 100
- 13842,14111 --+++--+++
- 36344,36583 i 150
- 36584,37311 i 120
- 36764,36765 +
- 36766,37311 pcpcpbcbcb
- 36766,37311 --+----+--
- #50356,50617 ---+----+-
- 50356,50617 -
- 50360,50617 ucpcpncbcb
- 50619,50915 ----+----+
- 50620,50915 cbcbucpcpn
- 53707,53885 +
- 53887,54216 i 150
- 56692,57369 i 150
- 69400,69799 i 120
- 86271,86540 +
- 94380,95100 pncbcbccpc
- 94380,95100 -
- 98930,98943 i 256
- 98944,98989 i 120
- 99210,99709 i 120
- 99790,100039 i 120
- 100040,100109 i 256
- 100110,100169 i 120
- 100840,101049 i 120
- #101167 -
- #101189 -
- 101940,102729 i 150
- 102259,102320 -
- ______________________________________________________________________________
- FineDehalo.avsi
- ______________________________________________________________________________
- # This program is free software. It comes without any warranty, to
- # the extent permitted by applicable law. You can redistribute it
- # and/or modify it under the terms of the Do What The Fuck You Want
- # To Public License, Version 2, as published by Sam Hocevar. See
- # http://sam.zoy.org/wtfpl/COPYING for more details.
- Function FineDehalo (clip src, float "rx", float "ry", int "thmi", int "thma", int "thlimi", int "thlima", float "darkstr", float "brightstr", int "showmask", float "contra", bool "excl", float "edgeproc")
- {
- rx = Default (rx, 2)
- ry = Default (ry, rx)
- thmi = Default (thmi, 80)
- thma = Default (thma, 128)
- thlimi = Default (thlimi, 50)
- thlima = Default (thlima, 100)
- darkstr = Default (darkstr, 1.0)
- brightstr = Default (brightstr, 1.0)
- showmask = Default (showmask, 0)
- contra = Default (contra, 0.0)
- excl = Default (excl, true)
- edgeproc = Default (edgeproc, 0.0)
- rx_i = Round (rx)
- ry_i = Round (ry)
- src
- ### Dehaloing ###
- dehaloed = DeHalo_alpha (rx=rx, ry=ry, darkstr=darkstr, brightstr=brightstr)
- # Contrasharpening
- dehaloed = (contra > 0)
- \ ? dehaloed.FineDehalo_contrasharp (src, contra)
- \ : dehaloed
- ### Main edges ###
- # Basic edge detection, thresholding will be applied later.
- edges = mt_edge (mode="prewitt", thY1=0, thY2=255)
- # Keeps only the sharpest edges (line edges)
- strong = edges.mt_lut (expr="x "+String(thmi)+" - "+String(thma-thmi)+" / 255 *")
- # Extends them to include the potential halos
- large = strong.mt_expand_multi (sw=rx_i, sh=ry_i)
- ### Exclusion zones ###
- # When two edges are close from each other (both edges of a single
- # line or multiple parallel color bands), the halo removal
- # oversmoothes them or makes seriously bleed the bands, producing
- # annoying artifacts. Therefore we have to produce a mask to exclude
- # these zones from the halo removal.
- # Includes more edges than previously, but ignores simple details
- light = edges.mt_lut (expr="x "+String(thlimi)+" - "+String(thlima-thlimi)+" / 255 *")
- # To build the exclusion zone, we make grow the edge mask, then shrink
- # it to its original shape. During the growing stage, close adjacent
- # edge masks will join and merge, forming a solid area, which will
- # remain solid even after the shrinking stage.
- # Mask growing
- shrink = light.mt_expand_multi (sw=rx_i, sh=ry_i, mode="ellipse")
- # At this point, because the mask was made of a shades of grey, we may
- # end up with large areas of dark grey after shrinking. To avoid this,
- # we amplify and saturate the mask here (actually we could even
- # binarize it).
- shrink = shrink.mt_lut ("x 4 *")
- # Mask shrinking
- shrink = shrink.mt_inpand_multi (sw=rx_i, sh=ry_i, mode="ellipse")
- # This mask is almost binary, which will produce distinct
- # discontinuities once applied. Then we have to smooth it.
- shrink = shrink.RemoveGrain (20, -1)
- shrink = shrink.RemoveGrain (20, -1)
- ### Final mask building ###
- # Previous mask may be a bit weak on the pure edge side, so we ensure
- # that the main edges are really excluded. We do not want them to be
- # smoothed by the halo removal.
- shr_med = (excl) ? mt_logic (strong, shrink, mode="max") : strong
- # Substracts masks and amplifies the difference to be sure we get 255
- # on the areas to be processed.
- outside = mt_lutxy (large, shr_med, "x y - 2 *")
- # If edge processing is required, adds the edgemask
- ep_str = "x y "+String(edgeproc * 0.66)+" * +"
- outside = (edgeproc > 0) ? mt_lutxy (outside, strong, ep_str) : outside
- # Smooth again and amplify to grow the mask a bit, otherwise the halo
- # parts sticking to the edges could be missed.
- outside = outside.RemoveGrain (20, -1).mt_lut ("x 2 *")
- ### Masking ###
- mt_merge (last, dehaloed, outside, y=3, u=2, v=2)
- (showmask == 1) ? outside.GreyScale ()
- \ : (showmask == 2) ? shrink.GreyScale ()
- \ : (showmask == 3) ? edges.GreyScale ()
- \ : (showmask == 4) ? strong.GreyScale ()
- \ : last
- }
- # level == 1.0 : normal contrasharp
- Function FineDehalo_contrasharp (clip dehaloed, clip src, float level)
- {
- bb = dehaloed.RemoveGrain (11, -1)
- bb2 = bb.Repair (bb.Repair (bb.Medianblur (2, -256, -256), 1), 1)
- xd = mt_makediff (bb, bb2)
- xd = xd.mt_lut ("x 128 - 2.49 * "+String(level)+" * 128 +")
- xdd = mt_lutxy (
- \ xd,
- \ mt_makediff (src, dehaloed),
- \ "x 128 - y 128 - * 0 < 128 x 128 - abs y 128 - abs < x y ? ?"
- \ )
- dehaloed.mt_adddiff (xdd, y=3, u=2, v=2)
- }
- # Try to remove 2nd order halos.
- Function FineDehalo2 (clip src, string "hconv", string "vconv", int "showmask")
- {
- hconv = Default (hconv, "-1 -2 0 0 40 0 0 -2 -1")
- vconv = Default (vconv, "-2 -1 0 0 40 0 0 -1 -2")
- showmask = Default (showmask, 0)
- src
- fix_h = mt_convolution (horizontal="1", vertical=vconv, y=3, u=2, v=2)
- fix_v = mt_convolution (horizontal=hconv, vertical="1", y=3, u=2, v=2)
- edges_h = mt_edge (mode="1 2 1 0 0 0 -1 -2 -1", thY1=0, thY2=255)
- edges_v = mt_edge (mode="1 0 -1 2 0 -2 1 0 -1", thY1=0, thY2=255)
- mask_h = edges_h #.mt_lut (expr="x 2 *")
- mask_v = edges_v #.mt_lut (expr="x 2 *")
- temp_h = mt_lutxy (mask_h, mask_v, expr="x 3 * y -")
- temp_v = mt_lutxy (mask_v, mask_h, expr="x 3 * y -")
- mask_h = temp_h
- mask_v = temp_v
- mask_h = mask_h.FineDehalo2_grow_mask ("vertical")
- mask_v = mask_v.FineDehalo2_grow_mask ("horizontal")
- src
- mt_merge (last, fix_h, mask_h, y=3, u=2, v=2)
- mt_merge (last, fix_v, mask_v, y=3, u=2, v=2)
- (showmask == 1) ? mt_logic (mask_h, mask_v, mode="max").GreyScale ()
- \ : last
- }
- Function FineDehalo2_grow_mask (clip mask, string mode)
- {
- Assert ((mode == "horizontal" || mode == "vertical"), "Wrong mode")
- mask
- mt_expand (mode=mode).mt_inpand (mode=mode)
- mask_1 = mt_expand (mode=mode)
- mask_2 = mask_1.mt_expand (mode=mode).mt_expand (mode=mode)
- mt_lutxy (mask_2, mask_1, expr="x y -")
- RemoveGrain (12, -1).mt_lut (expr="x 1.8 *")
- }
- ______________________________________________________________________________
- santiag.avsi
- ______________________________________________________________________________
- # Antialiasing
- # This program is free software. It comes without any warranty, to
- # the extent permitted by applicable law. You can redistribute it
- # and/or modify it under the terms of the Do What The Fuck You Want
- # To Public License, Version 2, as published by Sam Hocevar. See
- # http://sam.zoy.org/wtfpl/COPYING for more details.
- # type = "nnedi3", "eedi2", "eedi3" or "sangnom"
- Function santiag (clip c, int "strh", int "strv", string "type", int "nns", int "aa", int "threads", int "nsize", int "vcheck")
- {
- strh = Default (strh, 1)
- strv = Default (strv, 1)
- type = Default (type, "nnedi3")
- c
- (strh >= 0) ? santiag_dir (strh, type, nns=nns, aa=aa, threads=threads, nsize=nsize, vcheck=vcheck) : last
- (strv >= 0) ? TurnLeft ().santiag_dir (strv, type, nns=nns, aa=aa, threads=threads, nsize=nsize, vcheck=vcheck).TurnRight () : last
- }
- Function santiag_dir (clip c, int strength, string type, int "nns", int "aa", int "threads", int "nsize", int "vcheck")
- {
- c
- w = Width ()
- h = Height ()
- santiag_stronger (strength, type, nns=nns, aa=aa, threads=threads, nsize=nsize, vcheck=vcheck)
- Spline36Resize (w, h, 0, 0.5, w, h * 2)
- }
- Function santiag_stronger (clip c, int strength, string type, int "nns", int "aa", int "threads", int "nsize", int "vcheck")
- {
- strength = (strength < 0) ? 0 : strength
- field = strength % 2
- dh = (strength <= 0)
- (! dh) ? c.santiag_stronger (strength - 1, type) : c
- (type == "nnedi3" ) ? santiag_nnedi3 (dh, field, nns=nns, threads=threads, nsize=nsize)
- \ : (type == "eedi2" ) ? santiag_eedi2 (dh, field)
- \ : (type == "eedi3" ) ? santiag_eedi3 (dh, field, nns=nns, threads=threads, nsize=nsize, vcheck=vcheck)
- \ : (type == "sangnom") ? santiag_sangnom (dh, field, aa=aa)
- \ : Assert (false, "Santiag: unexpected value for type.")
- }
- Function santiag_nnedi3 (clip c, bool dh, int field, int "nns", int "threads", int "nsize")
- {
- c.nnedi3 (dh=dh, field=field, nns=nns, threads=threads, nsize=nsize)
- }
- Function santiag_eedi2 (clip c, bool dh, int field)
- {
- c
- w = Width ()
- h = Height ()
- (dh) ? last : PointResize (w, h / 2, 0, 1-field, w, h)
- eedi2 (field=field)
- }
- Function santiag_eedi3 (clip c, bool dh, int field, int "nns", int "threads", int "nsize", int "vcheck")
- {
- sclip = c.santiag_nnedi3 (dh, field, nns=nns, threads=threads, nsize=nsize)
- c.eedi3 (dh=dh, field=field, threads=threads, vcheck=vcheck, sclip=sclip)
- }
- Function santiag_sangnom (clip c, bool dh, int field, int "aa")
- {
- c
- w = Width ()
- h = Height ()
- (dh) ? Spline36Resize (w, h * 2, 0, -0.25, w, h) : last
- SangNom (order=field, aa=aa)
- }
- ______________________________________________________________________________
- ep-01-despot-mask.ass
- ______________________________________________________________________________
- [Script Info]
- ; Script generated by Aegisub 2.1.8
- ; http://www.aegisub.org/
- Title: DeSpot automatically generated file
- ScriptType: v4.00+
- WrapStyle: 0
- PlayResX: 704
- PlayResY: 480
- ScaledBorderAndShadow: yes
- Video Aspect Ratio: 0
- Video Zoom: 12
- Video Position: 701
- Video File: ep-01-workraw.avi
- [V4+ Styles]
- Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
- Style: Mask,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,7,0,0,0,1
- Style: Outline,Arial,20,&HFFFFFFFF,&H000000FF,&H00FF00FF,&H00000000,0,0,0,0,100,100,0,0,1,1,0,7,0,0,0,1
- [Events]
- Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
- Dialogue: 0,0:00:08.90,0:00:08.95,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 75 293 l 82 293 82 299 75 299{\p0}
- Dialogue: 0,0:00:09.94,0:00:09.98,Mask,,0000,0000,0000,,{\p1\pos(462,444)}m -4 -8 l 4 -8 4 8 -4 8{\p0}
- Dialogue: 0,0:00:10.03,0:00:10.11,Mask,,0000,0000,0000,,{\p1\pos(534,56)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:10.78,0:00:10.82,Mask,,0000,0000,0000,,{\p1\pos(404,248)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:11.40,0:00:11.44,Mask,,0000,0000,0000,,{\p1\pos(532,392)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:13.37,0:00:13.41,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 664 464 l 671 464 671 472 664 472{\p0}
- Dialogue: 0,0:00:13.53,0:00:13.58,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 86 266 l 95 266 95 272 86 272{\p0}
- Dialogue: 0,0:00:14.20,0:00:14.24,Mask,,0000,0000,0000,,{\p1\pos(532,458)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:14.32,0:00:14.36,Mask,,0000,0000,0000,,{\p1\pos(552,468)}m -8 -4 l 8 -4 8 4 -8 4{\p0}
- Dialogue: 0,0:00:14.49,0:00:14.54,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 664 282 l 671 282 671 288 664 288{\p0}
- Dialogue: 0,0:00:14.78,0:00:14.82,Mask,,0000,0000,0000,,{\p1\pos(636,396)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:15.57,0:00:15.61,Mask,,0000,0000,0000,,{\p1\pos(472,160)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:15.61,0:00:15.66,Mask,,0000,0000,0000,,{\p1\pos(230,56)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:15.62,0:00:15.66,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 527 185 l 534 185 534 191 527 191{\p0}
- Dialogue: 0,0:00:16.33,0:00:16.37,Mask,,0000,0000,0000,,{\p1\pos(530,52)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:16.33,0:00:16.37,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 622 197 l 628 197 628 203 622 203{\p0}
- Dialogue: 0,0:00:16.95,0:00:17.00,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 511 196 l 517 196 517 202 511 202{\p0}
- Dialogue: 0,0:00:17.04,0:00:17.08,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 538 232 l 543 232 543 238 538 238{\p0}
- Dialogue: 0,0:00:17.04,0:00:17.08,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 360 247 l 374 247 374 255 360 255{\p0}
- Dialogue: 0,0:00:17.71,0:00:17.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 525 385 l 532 385 532 391 525 391{\p0}
- Dialogue: 0,0:00:18.87,0:00:18.91,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 564 177 l 571 177 571 183 564 183{\p0}
- Dialogue: 0,0:00:19.12,0:00:19.16,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 525 114 l 532 114 532 120 525 120{\p0}
- Dialogue: 0,0:00:20.25,0:00:20.29,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 495 36 l 503 36 503 40 495 40{\p0}
- Dialogue: 0,0:00:20.88,0:00:20.92,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 362 410 l 369 410 369 417 362 417{\p0}
- Dialogue: 0,0:00:21.21,0:00:21.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 529 316 l 534 316 534 321 529 321{\p0}
- Dialogue: 0,0:00:21.29,0:00:21.33,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 698 126 l 703 126 703 133 698 133{\p0}
- Dialogue: 0,0:00:21.38,0:00:21.42,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 296 327 l 303 327 303 333 296 333{\p0}
- Dialogue: 0,0:00:21.75,0:00:21.79,Mask,,0000,0000,0000,,{\p1\pos(526,64)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:21.87,0:00:21.95,Mask,,0000,0000,0000,,{\p1\pos(10,214)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:21.91,0:00:21.95,Mask,,0000,0000,0000,,{\p1\pos(532,184)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:22.21,0:00:22.25,Mask,,0000,0000,0000,,{\p1\pos(162,38)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:22.21,0:00:22.25,Mask,,0000,0000,0000,,{\p1\pos(654,92)}m -12 -4 l 12 -4 12 4 -12 4{\p0}
- Dialogue: 0,0:00:22.21,0:00:22.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 627 159 l 654 159 654 168 627 168{\p0}
- Dialogue: 0,0:00:22.33,0:00:22.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 145 8 l 152 8 152 21 145 21{\p0}
- Dialogue: 0,0:00:22.33,0:00:22.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 140 14 l 148 14 148 19 140 19{\p0}
- Dialogue: 0,0:00:22.42,0:00:22.46,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 677 9 l 683 9 683 18 677 18{\p0}
- Dialogue: 0,0:00:22.62,0:00:22.67,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 527 47 l 535 47 535 53 527 53{\p0}
- Dialogue: 0,0:00:22.62,0:00:22.66,Mask,,0000,0000,0000,,{\p1\pos(676,160)}m -6 -4 l 6 -4 6 4 -6 4{\p0}
- Dialogue: 0,0:00:23.59,0:00:23.63,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 390 437 l 396 437 396 443 390 443{\p0}
- Dialogue: 0,0:00:23.71,0:00:23.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 673 345 l 679 345 679 351 673 351{\p0}
- Dialogue: 0,0:00:24.71,0:00:24.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 529 247 l 537 247 537 253 529 253{\p0}
- Dialogue: 0,0:00:25.71,0:00:25.75,Mask,,0000,0000,0000,,{\p1\pos(682,152)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:25.92,0:00:25.96,Mask,,0000,0000,0000,,{\p1\pos(570,436)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.29,0:00:26.46,Mask,,0000,0000,0000,,{\p1\pos(590,390)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.42,0:00:26.46,Mask,,0000,0000,0000,,{\p1\pos(564,446)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.46,0:00:26.54,Mask,,0000,0000,0000,,{\p1\pos(596,380)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.54,0:00:26.58,Mask,,0000,0000,0000,,{\p1\pos(682,396)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:29.21,0:00:29.25,Mask,,0000,0000,0000,,{\p1\pos(252,58)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.79,0:00:26.88,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 592 368 l 600 368 600 376 592 376{\p0}
- Dialogue: 0,0:00:26.79,0:00:26.83,Mask,,0000,0000,0000,,{\p1\pos(28,244)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:26.80,0:00:26.84,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 448 l 538 448 538 454 531 454{\p0}
- Dialogue: 0,0:00:28.22,0:00:28.26,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 179 l 539 179 539 184 531 184{\p0}
- Dialogue: 0,0:00:28.22,0:00:28.26,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 112 234 l 122 234 122 244 112 244{\p0}
- Dialogue: 0,0:00:30.30,0:00:30.34,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 380 l 538 380 538 386 531 386{\p0}
- Dialogue: 0,0:00:30.96,0:00:31.01,Mask,,0000,0000,0000,,{\p1\pos(250,190)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:31.01,0:00:31.05,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 245 l 538 245 538 250 531 250{\p0}
- Dialogue: 0,0:00:33.63,0:00:33.67,Mask,,0000,0000,0000,,{\p1\pos(672,258)}m -4 -8 l 4 -8 4 8 -4 8{\p0}
- Dialogue: 0,0:00:37.64,0:00:37.72,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 404 440 l 414 440 414 450 404 450{\p0}
- Dialogue: 0,0:00:38.01,0:00:38.05,Mask,,0000,0000,0000,,{\p1\pos(534,110)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:39.47,0:00:39.51,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 630 48 l 638 48 638 56 630 56{\p0}
- Dialogue: 0,0:00:41.52,0:00:41.56,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 529 40 l 536 40 536 45 529 45{\p0}
- Dialogue: 0,0:00:42.48,0:00:42.52,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 578 217 l 589 217 589 226 578 226{\p0}
- Dialogue: 0,0:00:42.69,0:00:42.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 452 0 l 464 0 464 13 452 13{\p0}
- Dialogue: 0,0:00:42.69,0:00:42.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 245 333 l 251 333 251 339 245 339{\p0}
- Dialogue: 0,0:00:43.56,0:00:43.61,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 490 43 l 498 43 498 51 490 51{\p0}
- Dialogue: 0,0:00:44.32,0:00:44.36,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 529 104 l 537 104 537 111 529 111{\p0}
- Dialogue: 0,0:00:45.69,0:00:45.73,Mask,,0000,0000,0000,,{\p1\pos(532,444)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:45.48,0:00:45.52,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 24 152 l 34 152 34 162 24 162{\p0}
- Dialogue: 0,0:00:45.81,0:00:45.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 646 46 l 656 46 656 64 646 64{\p0}
- Dialogue: 0,0:00:45.81,0:00:45.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 452 386 l 460 386 460 406 452 406{\p0}
- Dialogue: 0,0:00:45.98,0:00:46.02,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 328 236 l 336 236 336 244 328 244{\p0}
- Dialogue: 0,0:00:46.40,0:00:46.44,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 528 306 l 536 306 536 314 528 314{\p0}
- Dialogue: 0,0:00:46.31,0:00:46.44,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 550 296 l 558 296 558 312 550 312{\p0}
- Dialogue: 0,0:00:46.06,0:00:46.10,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 490 14 l 498 14 498 26 490 26{\p0}
- Dialogue: 0,0:00:46.94,0:00:47.06,Mask,,0000,0000,0000,,{\p1\pos(386,250)}m -4 -10 l 4 -10 4 10 -4 10{\p0}
- Dialogue: 0,0:00:47.69,0:00:47.81,Mask,,0000,0000,0000,,{\p1\pos(298,34)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:47.81,0:00:47.86,Mask,,0000,0000,0000,,{\p1\pos(533,40)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:47.94,0:00:48.06,Mask,,0000,0000,0000,,{\p1\pos(302,64)}m -8 -4 l 8 -4 8 4 -8 4{\p0}
- Dialogue: 0,0:00:49.06,0:00:49.19,Mask,,0000,0000,0000,,{\p1\pos(190,88)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:49.15,0:00:49.19,Mask,,0000,0000,0000,,{\p1\pos(484,26)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:48.44,0:00:48.56,Mask,,0000,0000,0000,,{\p1\pos(246,34)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:48.44,0:00:48.56,Mask,,0000,0000,0000,,{\p1\pos(444,444)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:50.61,0:00:50.65,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 530 104 l 540 104 540 112 530 112{\p0}
- Dialogue: 0,0:00:51.03,0:00:51.07,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 608 0 l 621 0 621 12 608 12{\p0}
- Dialogue: 0,0:00:51.61,0:00:51.66,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 151 13 l 158 13 158 23 151 23{\p0}
- Dialogue: 0,0:00:51.61,0:00:51.66,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 147 15 l 153 15 153 23 147 23{\p0}
- Dialogue: 0,0:00:54.11,0:00:54.15,Mask,,0000,0000,0000,,{\p1\pos(536,38)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:00:55.49,0:00:55.53,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 369 l 537 369 537 375 531 375{\p0}
- Dialogue: 0,0:01:06.63,0:01:06.67,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 356 323 l 363 323 363 329 356 329{\p0}
- Dialogue: 0,0:01:06.71,0:01:06.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 531 32 l 537 32 537 37 531 37{\p0}
- Dialogue: 0,0:01:06.75,0:01:06.80,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 626 366 l 632 366 632 380 626 380{\p0}
- Dialogue: 0,0:01:07.04,0:01:07.17,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 130 170 l 138 170 138 178 130 178{\p0}
- Dialogue: 0,0:01:07.42,0:01:07.46,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 117 113 l 126 113 126 122 117 122{\p0}
- Dialogue: 0,0:01:07.92,0:01:07.96,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 150 434 l 156 434 156 444 150 444{\p0}
- Dialogue: 0,0:01:08.80,0:01:08.84,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 530 234 l 537 234 537 239 530 239{\p0}
- Dialogue: 0,0:01:09.34,0:01:09.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 370 23 l 376 23 376 29 370 29{\p0}
- Dialogue: 0,0:01:11.59,0:01:11.63,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 529 300 l 535 300 535 305 529 305{\p0}
- Dialogue: 0,0:01:12.34,0:01:12.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 631 22 l 638 22 638 28 631 28{\p0}
- Dialogue: 0,0:01:13.01,0:01:13.05,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 528 30 l 536 30 536 36 528 36{\p0}
- Dialogue: 0,0:01:13.05,0:01:13.09,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 385 371 l 390 371 390 378 385 378{\p0}
- Dialogue: 0,0:01:16.34,0:01:16.38,Mask,,0000,0000,0000,,{\p1\pos(378,310)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:01:21.19,0:01:21.23,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m -1 453 l 3 453 3 459 -1 459{\p0}
- Dialogue: 0,0:01:23.97,0:01:24.10,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 632 157 l 640 157 640 165 632 165{\p0}
- Dialogue: 0,0:01:24.22,0:01:24.35,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 645 170 l 655 170 655 180 645 180{\p0}
- Dialogue: 0,0:01:24.44,0:01:24.48,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 131 165 l 139 165 139 171 131 171{\p0}
- Dialogue: 0,0:01:24.73,0:01:24.85,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 372 40 l 382 40 382 48 372 48 {\p0}
- Dialogue: 0,0:01:24.90,0:01:24.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 256 441 l 266 441 266 448 256 448{\p0}
- Dialogue: 0,0:01:25.73,0:01:25.89,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 414 26 l 422 26 422 34 414 34{\p0}
- Dialogue: 0,0:01:25.98,0:01:26.02,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 487 300 l 496 300 496 307 487 307{\p0}
- Dialogue: 0,0:01:25.98,0:01:26.10,Mask,,0000,0000,0000,,{\p1\pos(378,42)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:01:26.86,0:01:26.90,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 57 317 l 63 317 63 322 57 322{\p0}
- Dialogue: 0,0:01:27.19,0:01:27.23,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 192 188 l 198 188 198 192 192 192{\p0}
- Dialogue: 0,0:01:27.82,0:01:27.86,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 123 6 l 129 6 129 11 123 11{\p0}
- Dialogue: 0,0:01:36.45,0:01:36.49,Mask,,0000,0000,0000,,{\p1\pos(30,76)}m -4 -6 l 4 -6 4 6 -4 6{\p0}
- Dialogue: 0,0:01:36.78,0:01:36.82,Mask,,0000,0000,0000,,{\p1\pos(612,68)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:01:45.33,0:01:45.37,Mask,,0000,0000,0000,,{\p1\pos(264,392)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:01:45.41,0:01:45.50,Mask,,0000,0000,0000,,{\p1\pos(68,444)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:01:54.39,0:01:54.43,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 86 108 l 93 108 93 113 86 113{\p0}
- Dialogue: 0,0:02:07.23,0:02:07.27,Mask,,0000,0000,0000,,{\p1\pos(598,6)}m -6 -4 l 6 -4 6 4 -6 4{\p0}
- Dialogue: 0,0:02:09.27,0:02:09.31,Mask,,0000,0000,0000,,{\p1\pos(468,54)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:02:12.86,0:02:12.90,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 259 461 l 267 461 267 467 259 467{\p0}
- Dialogue: 0,0:02:17.95,0:02:17.99,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 101 237 l 108 237 108 242 101 242{\p0}
- Dialogue: 0,0:02:19.70,0:02:19.82,Mask,,0000,0000,0000,,{\p1\pos(458,404)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:02:20.45,0:02:20.70,Mask,,0000,0000,0000,,{\p1\pos(410,112)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:02:23.83,0:02:23.95,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 676 18 l 682 18 682 22 676 22{\p0}
- Dialogue: 0,0:02:30.09,0:02:30.13,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 541 424 l 546 424 546 430 541 430{\p0}
- Dialogue: 0,0:02:38.01,0:02:38.05,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 190 0 l 198 0 198 8 190 8{\p0}
- Dialogue: 0,0:02:40.13,0:02:40.22,Mask,,0000,0000,0000,,{\p1\pos(19,178)}m -4 -8 l 4 -8 4 8 -4 8{\p0}
- Dialogue: 0,0:02:45.39,0:02:45.51,Mask,,0000,0000,0000,,{\p1\pos(36,216)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:02:52.23,0:02:52.27,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 25 145 l 40 145 40 155 25 155{\p0}
- Dialogue: 0,0:03:10.21,0:03:10.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 462 420 l 470 420 470 425 462 425{\p0}
- Dialogue: 0,0:03:15.13,0:03:15.25,Mask,,0000,0000,0000,,{\p1\pos(146,206)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:03:26.10,0:03:26.14,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 460 120 l 470 120 470 130 460 130{\p0}
- Dialogue: 0,0:03:44.82,0:03:44.95,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 282 180 l 292 180 292 186 282 186{\p0}
- Dialogue: 0,0:03:45.00,0:03:45.04,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 217 391 l 225 391 225 396 217 396{\p0}
- Dialogue: 0,0:03:50.58,0:03:50.70,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 624 82 l 634 82 634 88 624 88{\p0}
- Dialogue: 0,0:04:10.94,0:04:10.98,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 0 68 l 5 68 5 72 0 72{\p0}
- Dialogue: 0,0:04:32.12,0:04:32.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 316 236 l 326 236 326 244 316 244{\p0}
- Dialogue: 0,0:04:44.76,0:04:44.81,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 691 444 l 699 444 699 450 691 450{\p0}
- Dialogue: 0,0:04:45.10,0:04:45.14,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 44 403 l 50 403 50 408 44 408{\p0}
- Dialogue: 0,0:04:47.64,0:04:47.68,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 668 353 l 677 353 677 359 668 359{\p0}
- Dialogue: 0,0:04:59.15,0:04:59.19,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 140 414 l 147 414 147 418 140 418{\p0}
- Dialogue: 0,0:05:15.59,0:05:15.63,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 549 29 l 555 29 555 37 549 37{\p0}
- Dialogue: 0,0:05:39.02,0:05:39.10,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 56 112 l 64 112 64 120 56 120{\p0}
- Dialogue: 0,0:05:40.11,0:05:40.15,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 586 466 l 596 466 596 474 586 474{\p0}
- Dialogue: 0,0:05:40.15,0:05:40.19,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 537 262 l 544 262 544 267 537 267{\p0}
- Dialogue: 0,0:05:41.52,0:05:41.65,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 652 187 l 657 187 657 194 652 194{\p0}
- Dialogue: 0,0:05:41.74,0:05:41.78,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 442 12 l 448 12 448 17 442 17{\p0}
- Dialogue: 0,0:05:50.16,0:05:50.20,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 103 234 l 111 234 111 239 103 239{\p0}
- Dialogue: 0,0:05:57.08,0:05:57.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 318 288 l 326 288 326 294 318 294{\p0}
- Dialogue: 0,0:05:58.17,0:05:58.25,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 50 232 l 55 232 55 237 50 237{\p0}
- Dialogue: 0,0:06:09.22,0:06:09.31,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 428 9 l 438 9 438 16 428 16{\p0}
- Dialogue: 0,0:06:42.38,0:06:42.42,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 631 418 l 639 418 639 426 631 426{\p0}
- Dialogue: 0,0:06:42.51,0:06:42.55,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 17 411 l 23 411 23 416 17 416{\p0}
- Dialogue: 0,0:06:42.71,0:06:42.76,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 433 254 l 439 254 439 259 433 259{\p0}
- Dialogue: 0,0:06:43.84,0:06:43.88,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 130 229 l 136 229 136 233 130 233{\p0}
- Dialogue: 0,0:06:43.67,0:06:43.79,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 397 411 l 407 411 407 421 397 421{\p0}
- Dialogue: 0,0:06:55.56,0:06:55.60,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 222 110 l 230 110 230 114 222 114{\p0}
- Dialogue: 0,0:07:12.58,0:07:12.62,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 4 426 l 12 426 12 431 4 431{\p0}
- Dialogue: 0,0:07:12.61,0:07:12.78,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 330 330 l 340 330 340 338 330 338{\p0}
- Dialogue: 0,0:07:32.63,0:07:32.72,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 540 332 l 548 332 548 336 540 336{\p0}
- Dialogue: 0,0:07:44.77,0:07:44.90,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 206 50 l 213 50 213 56 206 56{\p0}
- Dialogue: 0,0:09:12.16,0:09:12.20,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 3 364 l 13 364 13 375 3 375{\p0}
- Dialogue: 0,0:09:30.84,0:09:30.96,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 42 440 l 52 440 52 450 42 450{\p0}
- Dialogue: 0,0:09:30.92,0:09:30.97,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 106 387 l 115 387 115 393 106 393{\p0}
- Dialogue: 0,0:09:55.07,0:09:55.12,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 684 269 l 695 269 695 277 684 277{\p0}
- Dialogue: 0,0:09:56.40,0:09:56.49,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 288 244 l 298 244 298 250 288 250{\p0}
- Dialogue: 0,0:10:07.50,0:10:07.58,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 180 240 l 190 240 190 250 180 250{\p0}
- Dialogue: 0,0:10:22.93,0:10:22.98,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 178 171 l 186 171 186 176 178 176{\p0}
- Dialogue: 0,0:10:29.61,0:10:29.65,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 163 431 l 169 431 169 436 163 436{\p0}
- Dialogue: 0,0:10:30.90,0:10:30.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 683 163 l 691 163 691 169 683 169{\p0}
- Dialogue: 0,0:10:31.32,0:10:31.36,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 307 144 l 316 144 316 155 307 155{\p0}
- Dialogue: 0,0:10:45.24,0:10:45.29,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 690 100 l 704 100 704 116 690 116{\p0}
- Dialogue: 0,0:10:46.08,0:10:46.12,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 695 160 l 703 160 703 168 695 168{\p0}
- Dialogue: 0,0:10:46.29,0:10:46.33,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 692 438 l 698 438 698 444 692 444{\p0}
- Dialogue: 0,0:10:56.34,0:10:56.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 462 294 l 470 294 470 300 462 300{\p0}
- Dialogue: 0,0:10:59.38,0:10:59.42,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 346 382 l 354 382 354 390 346 390{\p0}
- Dialogue: 0,0:11:03.89,0:11:03.93,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 229 454 l 236 454 236 459 229 459{\p0}
- Dialogue: 0,0:11:08.15,0:11:08.19,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 182 415 l 190 415 190 421 182 421{\p0}
- Dialogue: 0,0:11:27.83,0:11:27.87,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 648 180 l 655 180 655 186 648 186{\p0}
- Dialogue: 0,0:11:35.17,0:11:35.21,Mask,,0000,0000,0000,,{\p1\pos(50,90)}m -4 -8 l 4 -8 4 8 -4 8{\p0}
- Dialogue: 0,0:11:50.73,0:11:50.85,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 564 318 l 572 318 572 324 564 324{\p0}
- Dialogue: 0,0:11:51.23,0:11:51.35,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 564 318 l 572 318 572 324 564 324{\p0}
- Dialogue: 0,0:11:58.36,0:11:58.48,Mask,,0000,0000,0000,,{\p1\pos(196,42)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:11:59.11,0:11:59.23,Mask,,0000,0000,0000,,{\p1\pos(132,378)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:12:01.32,0:12:01.37,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 473 84 l 482 84 482 89 473 89{\p0}
- Dialogue: 0,0:12:08.71,0:12:08.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 600 9 l 610 9 610 18 600 18{\p0}
- Dialogue: 0,0:12:08.71,0:12:08.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 597 15 l 605 15 605 20 597 20{\p0}
- Dialogue: 0,0:12:16.34,0:12:16.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 496 297 l 504 297 504 302 496 302{\p0}
- Dialogue: 0,0:12:35.10,0:12:35.15,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 514 212 l 522 212 522 220 514 220{\p0}
- Dialogue: 0,0:12:48.45,0:12:48.49,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 194 80 l 202 80 202 88 194 88{\p0}
- Dialogue: 0,0:12:55.50,0:12:55.55,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 172 403 l 180 403 180 413 172 413{\p0}
- Dialogue: 0,0:12:55.50,0:12:55.55,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 50 454 l 60 454 60 462 50 462{\p0}
- Dialogue: 0,0:12:59.17,0:12:59.22,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 422 414 l 429 414 429 419 422 419{\p0}
- Dialogue: 0,0:13:07.14,0:13:07.18,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 324 30 l 331 30 331 36 324 36{\p0}
- Dialogue: 0,0:13:37.46,0:13:37.50,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 679 369 l 689 369 689 376 679 376{\p0}
- Dialogue: 0,0:13:40.04,0:13:40.17,Mask,,0000,0000,0000,,{\p1\pos(230,286)}m -6 -4 l 6 -4 6 4 -6 4{\p0}
- Dialogue: 0,0:13:40.17,0:13:40.29,Mask,,0000,0000,0000,,{\p1\pos(38,326)}m -8 -4 l 8 -4 8 4 -8 4{\p0}
- Dialogue: 0,0:13:52.81,0:13:52.93,Mask,,0000,0000,0000,,{\p1\pos(106,438)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:13:53.01,0:13:53.10,Mask,,0000,0000,0000,,{\p1\pos(98,458)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:13:53.22,0:13:53.43,Mask,,0000,0000,0000,,{\p1\pos(472,464)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:13:53.93,0:13:54.02,Mask,,0000,0000,0000,,{\p1\pos(98,458)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:14:17.17,0:14:17.21,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 56 129 l 64 129 64 139 56 139{\p0}
- Dialogue: 0,0:14:37.90,0:14:37.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 73 431 l 81 431 81 437 73 437{\p0}
- Dialogue: 0,0:14:39.60,0:14:39.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 118 238 l 126 238 126 244 118 244{\p0}
- Dialogue: 0,0:14:42.57,0:14:42.61,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 118 136 l 128 136 128 142 118 142{\p0}
- Dialogue: 0,0:14:45.86,0:14:45.91,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 561 447 l 568 447 568 452 561 452{\p0}
- Dialogue: 0,0:14:50.28,0:14:50.32,Mask,,0000,0000,0000,,{\p1\pos(400,94)}m -4 -6 l 4 -6 4 6 -4 6{\p0}
- Dialogue: 0,0:15:29.03,0:15:29.07,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 445 214 l 452 214 452 218 445 218{\p0}
- Dialogue: 0,0:15:31.41,0:15:31.45,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 459 413 l 468 413 468 420 459 420{\p0}
- Dialogue: 0,0:15:35.41,0:15:35.49,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 205 13 l 218 13 218 27 205 27{\p0}
- Dialogue: 0,0:15:35.58,0:15:35.62,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 131 73 l 142 73 142 84 131 84{\p0}
- Dialogue: 0,0:15:38.67,0:15:38.71,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 20 326 l 29 326 29 332 20 332{\p0}
- Dialogue: 0,0:15:38.71,0:15:38.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 33 324 l 43 324 43 330 33 330{\p0}
- Dialogue: 0,0:15:38.75,0:15:38.79,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 35 327 l 45 327 45 333 35 333{\p0}
- Dialogue: 0,0:15:43.25,0:15:43.30,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 255 445 l 280 445 280 451 255 451{\p0}
- Dialogue: 0,0:15:44.42,0:15:44.46,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 510 312 l 519 312 519 318 510 318{\p0}
- Dialogue: 0,0:15:46.51,0:15:46.55,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 691 198 l 701 198 701 204 691 204{\p0}
- Dialogue: 0,0:15:46.71,0:15:46.80,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 250 19 l 258 19 258 25 250 25{\p0}
- Dialogue: 0,0:15:48.34,0:15:48.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 186 386 l 193 386 193 391 186 391{\p0}
- Dialogue: 0,0:16:27.76,0:16:27.80,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 261 466 l 269 466 269 471 261 471{\p0}
- Dialogue: 0,0:16:30.39,0:16:30.43,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 682 452 l 690 452 690 458 682 458{\p0}
- Dialogue: 0,0:16:31.01,0:16:31.09,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 556 194 l 564 194 564 202 556 202{\p0}
- Dialogue: 0,0:16:31.26,0:16:31.34,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 156 158 l 164 158 164 166 156 166{\p0}
- Dialogue: 0,0:16:31.34,0:16:31.42,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 392 96 l 400 96 400 104 392 104{\p0}
- Dialogue: 0,0:16:32.09,0:16:32.13,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 408 112 l 424 112 424 128 408 128{\p0}
- Dialogue: 0,0:16:38.89,0:16:38.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 143 250 l 149 250 149 255 143 255{\p0}
- Dialogue: 0,0:16:39.89,0:16:39.94,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 54 226 l 61 226 61 231 54 231{\p0}
- Dialogue: 0,0:16:51.15,0:16:51.28,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 170 292 l 180 292 180 300 170 300{\p0}
- Dialogue: 0,0:16:53.03,0:16:53.07,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 24 228 l 32 228 32 233 24 233{\p0}
- Dialogue: 0,0:16:54.20,0:16:54.32,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 247 465 l 255 465 255 472 247 472{\p0}
- Dialogue: 0,0:16:54.24,0:16:54.28,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 248 476 l 255 476 255 481 248 481{\p0}
- Dialogue: 0,0:17:18.51,0:17:18.55,Mask,,0000,0000,0000,,{\p1\pos(362,390)}m -8 -4 l 8 -4 8 4 -8 4{\p0}
- Dialogue: 0,0:17:18.64,0:17:18.68,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 184 130 l 192 130 192 138 184 138{\p0}
- Dialogue: 0,0:17:27.23,0:17:27.31,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 612 156 l 620 156 620 164 612 164{\p0}
- Dialogue: 0,0:17:35.28,0:17:35.33,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 669 368 l 677 368 677 374 669 374{\p0}
- Dialogue: 0,0:17:40.25,0:17:40.29,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 217 196 l 224 196 224 201 217 201{\p0}
- Dialogue: 0,0:17:41.62,0:17:41.66,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 218 150 l 225 150 225 156 218 156{\p0}
- Dialogue: 0,0:17:54.59,0:17:54.64,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 326 117 l 332 117 332 122 326 122{\p0}
- Dialogue: 0,0:18:00.10,0:18:00.14,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 547 153 l 553 153 553 160 547 160{\p0}
- Dialogue: 0,0:18:21.96,0:18:22.00,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 155 388 l 165 388 165 398 155 398{\p0}
- Dialogue: 0,0:18:36.59,0:18:36.63,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 410 178 l 418 178 418 186 410 186{\p0}
- Dialogue: 0,0:19:42.41,0:19:42.45,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 207 278 l 211 278 211 284 207 284{\p0}
- Dialogue: 0,0:19:50.08,0:19:50.13,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 123 316 l 131 316 131 322 123 322{\p0}
- Dialogue: 0,0:19:50.45,0:19:50.58,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 182 170 l 190 170 190 178 182 178{\p0}
- Dialogue: 0,0:19:58.59,0:19:58.63,Mask,,0000,0000,0000,,{\p1\pos(364,342)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:19:58.67,0:19:58.76,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 628 26 l 636 26 636 36 628 36{\p0}
- Dialogue: 0,0:19:59.18,0:19:59.26,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 632 68 l 644 68 644 78 632 78{\p0}
- Dialogue: 0,0:19:59.97,0:20:00.01,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 444 123 l 451 123 451 129 444 129{\p0}
- Dialogue: 0,0:20:01.10,0:20:01.14,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 179 370 l 185 370 185 376 179 376{\p0}
- Dialogue: 0,0:20:11.23,0:20:11.27,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 229 189 l 236 189 236 194 229 194{\p0}
- Dialogue: 0,0:20:26.37,0:20:26.45,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 94 284 l 102 284 102 292 94 292{\p0}
- Dialogue: 0,0:20:35.34,0:20:35.38,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 644 365 l 650 365 650 369 644 369{\p0}
- Dialogue: 0,0:20:45.72,0:20:45.77,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 283 24 l 289 24 289 31 283 31{\p0}
- Dialogue: 0,0:20:47.89,0:20:47.93,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 396 81 l 403 81 403 86 396 86{\p0}
- Dialogue: 0,0:21:10.71,0:21:10.75,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 220 267 l 227 267 227 274 220 274{\p0}
- Dialogue: 0,0:21:17.12,0:21:17.21,Mask,,0000,0000,0000,,{\p1\pos(322,174)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:21:24.38,0:21:24.51,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 568 395 l 573 395 573 399 568 399{\p0}
- Dialogue: 0,0:21:36.23,0:21:36.27,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 611 65 l 619 65 619 72 611 72{\p0}
- Dialogue: 0,0:21:45.24,0:21:45.28,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 309 94 l 315 94 315 99 309 99{\p0}
- Dialogue: 0,0:21:58.38,0:21:58.42,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 320 104 l 342 104 342 110 320 110{\p0}
- Dialogue: 0,0:21:58.92,0:21:58.96,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 40 334 l 47 334 47 339 40 339{\p0}
- Dialogue: 0,0:22:17.11,0:22:17.15,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 691 167 l 699 167 699 171 691 171{\p0}
- Dialogue: 0,0:22:17.36,0:22:17.40,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 450 334 l 459 334 459 341 450 341{\p0}
- Dialogue: 0,0:22:17.44,0:22:17.48,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 680 0 l 687 0 687 6 680 6{\p0}
- Dialogue: 0,0:22:21.15,0:22:21.19,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 417 368 l 424 368 424 374 417 374{\p0}
- Dialogue: 0,0:22:47.85,0:22:47.89,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 72 190 l 79 190 79 195 72 195{\p0}
- Dialogue: 0,0:22:51.81,0:22:51.85,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 68 29 l 75 29 75 35 68 35{\p0}
- Dialogue: 0,0:22:54.23,0:22:54.27,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 213 54 l 221 54 221 62 213 62{\p0}
- Dialogue: 0,0:23:04.15,0:23:04.28,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 560 144 l 568 144 568 152 560 152{\p0}
- Dialogue: 0,0:23:10.53,0:23:10.65,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 182 120 l 190 120 190 128 182 128{\p0}
- Dialogue: 0,0:23:12.12,0:23:12.16,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 449 368 l 456 368 456 375 449 375{\p0}
- Dialogue: 0,0:23:22.04,0:23:22.13,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 161 178 l 167 178 167 188 161 188{\p0}
- Dialogue: 0,0:23:30.22,0:23:30.26,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 102 169 l 112 169 112 177 102 177{\p0}
- Dialogue: 0,0:23:39.40,0:23:39.44,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 36 132 l 45 132 45 141 36 141{\p0}
- Dialogue: 0,0:24:01.71,0:24:01.79,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 223 456 l 231 456 231 462 223 462{\p0}
- Dialogue: 0,0:24:07.09,0:24:07.13,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 236 49 l 243 49 243 54 236 54{\p0}
- Dialogue: 0,0:24:08.18,0:24:08.22,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 118 339 l 124 339 124 344 118 344{\p0}
- Dialogue: 0,0:24:19.73,0:24:19.77,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 47 217 l 55 217 55 223 47 223{\p0}
- Dialogue: 0,0:24:21.61,0:24:21.65,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 382 418 l 390 418 390 424 382 424{\p0}
- Dialogue: 0,0:24:32.86,0:24:32.99,Mask,,0000,0000,0000,,{\p1\pos(84,60)}m -4 -4 l 4 -4 4 4 -4 4{\p0}
- Dialogue: 0,0:24:35.24,0:24:35.29,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 153 2 l 161 2 161 7 153 7{\p0}
- Dialogue: 0,0:25:09.02,0:25:09.11,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 447 337 l 455 337 455 343 447 343{\p0}
- Dialogue: 0,0:25:40.64,0:25:40.68,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 14 40 l 34 40 34 58 14 58{\p0}
- Dialogue: 0,0:25:40.68,0:25:40.76,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 24 32 l 32 32 32 40 24 40{\p0}
- Dialogue: 0,0:25:42.14,0:25:42.19,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 300 274 l 307 274 307 281 300 281{\p0}
- Dialogue: 0,0:26:16.59,0:26:16.67,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 380 90 l 390 90 390 98 380 98{\p0}
- Dialogue: 0,0:26:39.24,0:26:39.36,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 296 150 l 306 150 306 158 296 158{\p0}
- Dialogue: 0,0:26:54.55,0:26:54.59,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 371 162 l 377 162 377 167 371 167{\p0}
- Dialogue: 0,0:27:35.84,0:27:36.00,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 486 218 l 508 218 508 234 486 234{\p0}
- Dialogue: 0,0:27:39.26,0:27:39.30,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 58 66 l 66 66 66 77 58 77{\p0}
- Dialogue: 0,0:27:45.39,0:27:45.43,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 126 375 l 133 375 133 381 126 381{\p0}
- Dialogue: 0,0:27:48.31,0:27:48.39,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 594 32 l 602 32 602 40 594 40{\p0}
- Dialogue: 0,0:27:52.60,0:27:52.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 580 154 l 590 154 590 162 580 162{\p0}
- Dialogue: 0,0:27:53.53,0:27:53.57,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 224 222 l 234 222 234 227 224 227{\p0}
- Dialogue: 0,0:27:53.69,0:27:53.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 49 306 l 54 306 54 313 49 313{\p0}
- Dialogue: 0,0:27:55.44,0:27:55.53,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 275 106 l 280 106 280 111 275 111{\p0}
- Dialogue: 0,0:27:55.77,0:27:55.81,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 460 210 l 475 210 475 225 460 225{\p0}
- Dialogue: 0,0:27:55.77,0:27:55.86,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 306 38 l 316 38 316 46 306 46{\p0}
- Dialogue: 0,0:27:58.57,0:27:58.61,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 666 77 l 675 77 675 84 666 84{\p0}
- Dialogue: 0,0:27:58.69,0:27:58.73,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 568 146 l 578 146 578 154 568 154{\p0}
- Dialogue: 0,0:27:58.78,0:27:58.82,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 471 327 l 477 327 477 331 471 331{\p0}
- Dialogue: 0,0:28:03.49,0:28:03.54,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 260 28 l 267 28 267 33 260 33{\p0}
- Dialogue: 0,0:28:05.58,0:28:05.62,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 594 63 l 598 63 598 71 594 71{\p0}
- Dialogue: 0,0:28:05.62,0:28:05.66,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 0 425 l 7 425 7 432 0 432{\p0}
- Dialogue: 0,0:28:06.96,0:28:07.00,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 36 10 l 41 10 41 15 36 15{\p0}
- Dialogue: 0,0:28:07.87,0:28:07.92,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 607 69 l 613 69 613 77 607 77{\p0}
- Dialogue: 0,0:28:10.37,0:28:10.45,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 32 156 l 40 156 40 164 32 164{\p0}
- Dialogue: 0,0:28:14.00,0:28:14.05,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 146 296 l 152 296 152 302 146 302{\p0}
- Dialogue: 0,0:28:21.55,0:28:21.60,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 654 374 l 659 374 659 379 654 379{\p0}
- Dialogue: 0,0:28:25.06,0:28:25.10,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 143 401 l 150 401 150 409 143 409{\p0}
- Dialogue: 0,0:28:31.48,0:28:31.52,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 352 214 l 357 214 357 218 352 218{\p0}
- Dialogue: 0,0:28:34.23,0:28:34.28,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 180 58 l 186 58 186 64 180 64{\p0}
- Dialogue: 0,0:28:34.40,0:28:34.44,Mask,,0000,0000,0000,,{\pos(0,0)\p1}m 315 38 l 321 38 321 43 315 43{\p0}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement