View Full Version : CTools
Ceppo
11th February 2022, 17:30
GitHub:
https://github.com/CeppoTools/CTools
GitHub Release:
https://github.com/CeppoTools/CTools/releases/tag/v1.2.2
I'm not a programmer, so advices are gladly accepted.
CQTGMC needs:
rgTools.dll
masktools2.dll
mvtools2.dll
needi3.dll
### DEINTERLACER ###
# CQTGMC by Ceppo
# v1.0.0 first public release
# This function is an attempt to emulate QTGMC while retaining more details, removing more shimmering with as less blending as possible.
# PARAMETERS:
# Sharpeness (0.25): sharpening filter strength. Higher values give more sharpening.
# thSAD1: deshimmering strength, higher value give less shimmering, while lower values less blending.
# thSAD2: deshimmering strength in search clip, if you get combed pixels you may want to lower this and increase thSAD1.
# thSAD3: strength for restoring progressive content, if you get combed pixels you may want to lower this.
# thSAD3: MCompensate's thSAD for the sharpening filter limiter.
function CQTGMC(clip input, float "Sharpness", int "thSAD1", int "thSAD2", int "thSAD3", int "thSAD4")
{
thSAD1 = default(thSAD1, 192)
thSAD2 = default(thSAD2, 320)
thSAD3 = default(thSAD3, 128)
thSAD4 = default(thSAD4, 320)
Sharpness = default(Sharpness, 0.25)
padded = StackHorizontal(input,input.FlipHorizontal()).Crop(0,0,input.width()+input.width()%64,0)
padded = StackVertical(padded,padded.FlipVertical()).Crop(0,0,0,input.height()+input.height()%64)
bobbed = padded.nnedi3(-2)
bobbed
RemoveGrain(12)
GaussResize(width(),height(),0,0,width()+0.0001,height()+0.0001,p=2)
Merge(bobbed,0.25)
srchClip = last
super = MSuper()
bvec = MAnalyse(super,isb=true,blksize=64,overlap=32)
fvec = MAnalyse(super,isb=false,blksize=64,overlap=32)
Comp1 = MCompensate(super,bvec,thSAD=thSAD2)
Comp2 = MCompensate(super,fvec,thSAD=thSAD2)
Interleave(Comp1,last,Comp2)
super = MSuper()
bvec = MAnalyse(super,isb=true,blksize=64,overlap=32)
fvec = MAnalyse(super,isb=false,blksize=64,overlap=32)
Inter = MFlowInter(super,bvec,fvec,blend=false)
global CQTGMC_A = Inter.SelectEvery(3,0)
global CQTGMC_B = Inter.SelectEvery(3,1)
srchClip
ScriptClip("""
P = YDifferenceFromPrevious()
N = Trim(1,0).YDifferenceFromPrevious()
N < P ? CQTGMC_A : CQTGMC_B
""")
super = MSuper()
bVec1 = MAnalyse(super,isb=true,overlap=4,delta=1)
fVec1 = MAnalyse(super,isb=false,overlap=4,delta=1)
bVec2 = MAnalyse(super,isb=true,overlap=4,delta=2)
fVec2 = MAnalyse(super,isb=false,overlap=4,delta=2)
bVec3 = MAnalyse(super,isb=true,overlap=4,delta=3)
fVec3 = MAnalyse(super,isb=false,overlap=4,delta=3)
bobbed
super = MSuper(levels=1)
bComp1 = MCompensate(super,bVec1,thSAD=thSAD3)
fComp1 = MCompensate(super,fVec1,thSAD=thSAD3)
Interleave(\
SeparateFields(bobbed).SelectEvery(4,0),\
SeparateFields(fComp1).SelectEvery(4,1),\
SeparateFields(bComp1).SelectEvery(4,2),\
SeparateFields(bobbed).SelectEvery(4,3))
Weave()
super = MSuper(levels=1)
bComp1 = MCompensate(super, bVec1,thSAD=thSAD4)
fComp1 = MCompensate(super, fVec1,thSAD=thSAD4)
tMax = mt_logic(fComp1,"max",U=3,V=3).mt_logic(bComp1,"max",U=3,V=3)
tMin = mt_logic(fComp1,"min",U=3,V=3).mt_logic(bComp1,"min",U=3,V=3)
bComp3 = MCompensate(super,bVec3,thSAD=thSAD4)
fComp3 = MCompensate(super,fVec3,thSAD=thSAD4)
tMax = tMax.mt_logic(fComp3,"max", U=3,V=3 ).mt_logic(bComp3,"max", U=3,V=3 )
tMin = tMin.mt_logic(fComp3,"min", U=3,V=3 ).mt_logic(bComp3,"min", U=3,V=3 )
MDegrain3(super,bVec1,fVec1,bVec2,fVec2,bVec3,fVec3,thSAD=thSAD1)
sharpen = mt_adddiff(mt_makediff(Removegrain(20),u=3,v=3),u=3,v=3)
mt_clamp(sharpen,tMax,tMin,Sharpness,Sharpness,3,3,3)
super = MSuper(levels=1)
MDegrain3(super,bVec1,fVec1,bVec2,fVec2,bVec3,fVec3,thSAD=thSAD1)
Crop(0,0,-(input.width()%64),-(input.height()%64))
return last
}
New version needs also TDeint. x2 speed.
### DEINTERLACER ###
# CQTGMC by Ceppo
# v1.0.1
# - Added TDeint for search clip.
# - Changed MDegrain3 to MDegrain1 for speed.
# v1.0.0 first public release
#
# This function is an attempt to emulate QTGMC while retaining more details, removing more shimmering with as less blending as possible.
# PARAMETERS:
# Sharpeness (0.25): sharpening filter strength. Higher values give more sharpening.
# thSAD1: deshimmering strength, higher value give less shimmering, while lower values less blending.
# thSAD2: deshimmering strength in search clip, if you get combed pixels you may want to lower this and increase thSAD1.
# thSAD3: strength for restoring progressive content, if you get combed pixels you may want to lower this.
# thSAD3: MCompensate's thSAD for the sharpening filter limiter.
function CQTGMC(clip input, float "Sharpness", int "thSAD1", int "thSAD2", int "thSAD3", int "thSAD4")
{
thSAD1 = default(thSAD1, 192)
thSAD2 = default(thSAD2, 320)
thSAD3 = default(thSAD3, 128)
thSAD4 = default(thSAD4, 320)
Sharpness = default(Sharpness, 0.25)
padded = StackHorizontal(input,input.FlipHorizontal()).Crop(0,0,input.width()+input.width()%64,0)
padded = StackVertical(padded,padded.FlipVertical()).Crop(0,0,0,input.height()+input.height()%64)
bobbed = padded.nnedi3(-2)
padded
TDeint(mode=1,sharp=false,tryWeave=true,edeint=bobbed)
RemoveGrain(12).GaussResize(width(),height(),0,0,width()+0.0001,height()+0.0001,p=2).Merge(last,0.25)
srchClip = last
super = MSuper()
bvec = MAnalyse(super,isb=true,blksize=64,overlap=32)
fvec = MAnalyse(super,isb=false,blksize=64,overlap=32)
Comp1 = MCompensate(super,bvec,thSAD=thSAD2)
Comp2 = MCompensate(super,fvec,thSAD=thSAD2)
Interleave(Comp1,last,Comp2)
super = MSuper()
bvec = MAnalyse(super,isb=true,blksize=64,overlap=32)
fvec = MAnalyse(super,isb=false,blksize=64,overlap=32)
Inter = MFlowInter(super,bvec,fvec,blend=false)
global CQTGMC_A = Inter.SelectEvery(3,0)
global CQTGMC_B = Inter.SelectEvery(3,1)
srchClip
ScriptClip("""
P = YDifferenceFromPrevious()
N = Trim(1,0).YDifferenceFromPrevious()
N < P ? CQTGMC_A : CQTGMC_B
""")
super = MSuper()
bVec1 = MAnalyse(super,isb=true,overlap=4,delta=1)
fVec1 = MAnalyse(super,isb=false,overlap=4,delta=1)
bobbed
super = MSuper(levels=1)
bComp1 = MCompensate(super,bVec1,thSAD=thSAD3)
fComp1 = MCompensate(super,fVec1,thSAD=thSAD3)
Interleave(\
SeparateFields(bobbed).SelectEvery(4,0),\
SeparateFields(fComp1).SelectEvery(4,1),\
SeparateFields(bComp1).SelectEvery(4,2),\
SeparateFields(bobbed).SelectEvery(4,3))
Weave()
super = MSuper(levels=1)
bComp1 = MCompensate(super, bVec1,thSAD=thSAD4)
fComp1 = MCompensate(super, fVec1,thSAD=thSAD4)
tMax = mt_logic(fComp1,"max",U=3,V=3).mt_logic(bComp1,"max",U=3,V=3)
tMin = mt_logic(fComp1,"min",U=3,V=3).mt_logic(bComp1,"min",U=3,V=3)
MDegrain1(super,bVec1,fVec1,thSAD=thSAD1)
sharpen = mt_adddiff(mt_makediff(Removegrain(20),u=3,v=3),u=3,v=3)
mt_clamp(sharpen,tMax,tMin,Sharpness,Sharpness,3,3,3)
super = MSuper(levels=1)
MDegrain1(super,bVec1,fVec1,thSAD=thSAD1)
Crop(0,0,-(input.width()%64),-(input.height()%64))
return last
}
real.finder
11th February 2022, 21:20
thanks, so this is like an update for https://forum.doom9.org/showthread.php?p=1935471 ?
it will be nice if it can deal with cases like https://github.com/pinterf/TIVTC/issues/26 and https://github.com/pinterf/TIVTC/issues/27
Ceppo
11th February 2022, 22:17
Yes, CTelecine2() is telecinebob() with a minor update.
About the rest (I gave a quick look since I'm going to sleep) I can try to mod CDecimate to output a VFR framerate and a VFR file. For the moire effect, I need a source to understand the problem since I never encountered it in my experience.
kedautinh12
11th February 2022, 22:47
Here have sample moirr effect, good luck
https://forum.doom9.org/showthread.php?p=1684203#post1684203
Will happy if you add more colors space and HBD :D
real.finder
11th February 2022, 23:16
For the moire effect, I need a source to understand the problem since I never encountered it in my experience.
Here have sample moirr effect, good luck
https://forum.doom9.org/showthread.php?p=1684203#post1684203
also https://www.mediafire.com/file/tob9n5emimto8o6/Moire_Test.m2v/file
Ceppo
12th February 2022, 14:43
On it!
Edit:
I did the VFR mod and I found a way to do the right field matching when there is the moire effect. I lost an hour tracking a bug. I hope to finish the testing tomorrow.
Ceppo
13th February 2022, 17:34
I added VFR and created CFieldDuplicate. In the ReadMe.txt you will see how to use it for the moire effect.
On real.finder linked source I got a constant pattern correctly.
It won't work on Anime due to the duplicates. But it should improve field matching on non-anime sources. If someone has a source to test it. Mine are all progressive.
real.finder
13th February 2022, 20:50
I added VFR and created CFieldDuplicate. In the ReadMe.txt you will see how to use it for the moire effect.
On real.finder linked source I got a constant pattern correctly.
It won't work on Anime due to the duplicates. But it should improve field matching on non-anime sources. If someone has a source to test it. Mine are all progressive.
thanks
I did try to get vfr from http://www.solidfiles.com/v/NVqK6xkYK7ANM
CTelecine(thr2=2,edeint2=QTGMC(),write=true)
#CDecimate(true)
then after doing analysis pass
CTelecine(thr2=2,edeint2=QTGMC(),inputtxt=true)
CDecimate(true)
but I get errors "CDecimate: cycle at frame 180..."
I did edit CTelecine.txt but no luck
Ceppo
13th February 2022, 20:52
Can you upload your source elsewhere? I can't load the site. Thanks.
real.finder
13th February 2022, 20:56
Can you upload your source elsewhere? I can't load the site. Thanks.
is this ok https://xfl.jp/E5n90r ?
Ceppo
13th February 2022, 21:06
Yes, I will check it right away.
Ceppo
13th February 2022, 21:52
With anime is a pain, however I did it until frame 1500
#1-pass
#~ CTelecine(write=true)
#2-pass
#~ CDuplicate(nt=0,write=true)
#3-pass
#Copy CDuplicate first 1206 frames and replace them in CTelecine.txt
#An euristic to fix the wrong field matching is to look at the previous pattern.
#~ CTelecine(thr2=6,edeint2=QTGMC().SelectEven(),inputTxt=true)
#~ CDecimate(true)
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 10
0 11
0 12
0 13
0 14
0 15
0 16
0 17
0 18
0 19
0 20
0 21
0 22
0 23
0 24
0 25
0 26
0 27
0 28
0 29
0 30
0 31
0 32
0 33
0 34
0 35
0 36
0 37
0 38
0 39
0 40
0 41
0 42
0 43
0 44
0 45
0 46
0 47
0 48
0 49
0 50
0 51
0 52
0 53
0 54
0 55
0 56
0 57
0 58
0 59
0 60
0 61
0 62
0 63
0 64
0 65
0 66
0 67
0 68
0 69
0 70
0 71
0 72
0 73
0 74
0 75
0 76
0 77
0 78
0 79
0 80
0 81
0 82
0 83
0 84
0 85
0 86
0 87
0 88
0 89
0 90
0 91
0 92
0 93
0 94
0 95
0 96
0 97
0 98
0 99
0 100
0 101
0 102
0 103
0 104
0 105
0 106
0 107
0 108
0 109
0 110
0 111
0 112
0 113
0 114
0 115
0 116
0 117
0 118
0 119
0 120
0 121
0 122
0 123
0 124
0 125
0 126
0 127
0 128
0 129
0 130
0 131
0 132
0 133
0 134
0 135
0 136
0 137
0 138
0 139
0 140
0 141
0 142
0 143
0 144
0 145
0 146
0 147
0 148
0 149
0 150
0 151
0 152
0 153
0 154
0 155
0 156
0 157
0 158
0 159
0 160
0 161
0 162
0 163
0 164
0 165
0 166
0 167
0 168
0 169
0 170
0 171
0 172
0 173
0 174
0 175
0 176
0 177
0 178
0 179
0 180
0 181
0 182
0 183
0 184
0 185
0 186
0 187
0 188
0 189
0 190
0 191
0 192
0 193
0 194
0 195
0 196
0 197
0 198
0 199
0 200
0 201
0 202
0 203
0 204
0 205
0 206
0 207
0 208
0 209
0 210
0 211
0 212
0 213
0 214
0 215
0 216
0 217
0 218
0 219
0 220
0 221
0 222
0 223
0 224
0 225
0 226
0 227
0 228
0 229
0 230
0 231
0 232
0 233
0 234
0 235
0 236
0 237
0 238
0 239
0 240
0 241
0 242
0 243
0 244
0 245
0 246
0 247
0 248
0 249
0 250
0 251
0 252
0 253
0 254
0 255
0 256
0 257
0 258
0 259
0 260
0 261
0 262
0 263
0 264
0 265
0 266
0 267
0 268
0 269
0 270
0 271
0 272
0 273
0 274
0 275
0 276
0 277
0 278
0 279
0 280
0 281
0 282
0 283
0 284
0 285
0 286
0 287
0 288
0 289
0 290
0 291
0 292
0 293
0 294
0 295
0 296
0 297
0 298
0 299
0 300
0 301
0 302
0 303
0 304
0 305
0 306
0 307
0 308
0 309
0 310
0 311
0 312
0 313
0 314
0 315
0 316
0 317
0 318
0 319
0 320
0 321
0 322
0 323
0 324
0 325
0 326
0 327
0 328
0 329
0 330
0 331
0 332
0 333
0 334
0 335
0 336
0 337
0 338
0 339
0 340
0 341
0 342
0 343
0 344
0 345
0 346
0 347
0 348
0 349
0 350
0 351
0 352
0 353
0 354
0 355
0 356
0 357
0 358
0 359
0 360
0 361
0 362
0 363
0 364
0 365
0 366
0 367
0 368
0 369
0 370
0 371
0 372
0 373
0 374
0 375
0 376
0 377
0 378
0 379
0 380
0 381
0 382
0 383
0 384
0 385
0 386
0 387
0 388
0 389
0 390
0 391
0 392
0 393
0 394
0 395
0 396
0 397
0 398
0 399
0 400
0 401
0 402
0 403
0 404
0 405
0 406
0 407
0 408
0 409
0 410
0 411
0 412
0 413
0 414
0 415
0 416
0 417
0 418
0 419
0 420
0 421
0 422
0 423
0 424
0 425
0 426
0 427
0 428
0 429
0 430
0 431
0 432
0 433
0 434
0 435
0 436
0 437
0 438
0 439
0 440
0 441
0 442
0 443
0 444
0 445
0 446
0 447
0 448
0 449
0 450
0 451
0 452
0 453
0 454
0 455
0 456
0 457
0 458
0 459
0 460
0 461
0 462
0 463
0 464
0 465
0 466
0 467
0 468
0 469
0 470
0 471
0 472
0 473
0 474
0 475
0 476
0 477
0 478
0 479
0 480
0 481
0 482
0 483
0 484
0 485
0 486
0 487
0 488
0 489
0 490
0 491
0 492
0 493
0 494
0 495
0 496
0 497
0 498
0 499
0 500
0 501
0 502
0 503
0 504
0 505
0 506
0 507
0 508
0 509
0 510
0 511
0 512
0 513
0 514
0 515
0 516
0 517
0 518
0 519
0 520
0 521
0 522
0 523
0 524
0 525
0 526
0 527
0 528
0 529
0 530
0 531
0 532
0 533
0 534
0 535
0 536
0 537
0 538
0 539
0 540
0 541
0 542
0 543
0 544
0 545
0 546
0 547
0 548
0 549
0 550
0 551
0 552
0 553
0 554
0 555
0 556
0 557
0 558
0 559
0 560
0 561
0 562
0 563
0 564
0 565
0 566
0 567
0 568
0 569
0 570
0 571
0 572
0 573
0 574
0 575
0 576
0 577
0 578
0 579
0 580
0 581
0 582
0 583
0 584
0 585
0 586
0 587
0 588
0 589
0 590
0 591
0 592
0 593
0 594
0 595
0 596
0 597
0 598
0 599
0 600
0 601
0 602
0 603
0 604
0 605
0 606
0 607
0 608
0 609
0 610
0 611
0 612
0 613
0 614
0 615
0 616
0 617
0 618
0 619
0 620
0 621
0 622
0 623
0 624
0 625
0 626
0 627
0 628
0 629
0 630
0 631
0 632
0 633
0 634
0 635
0 636
0 637
0 638
0 639
0 640
0 641
0 642
0 643
0 644
0 645
0 646
0 647
0 648
0 649
0 650
0 651
0 652
0 653
0 654
0 655
0 656
0 657
0 658
0 659
0 660
0 661
0 662
0 663
0 664
0 665
0 666
0 667
0 668
0 669
0 670
0 671
0 672
0 673
0 674
0 675
0 676
0 677
0 678
0 679
0 680
0 681
0 682
0 683
0 684
0 685
0 686
0 687
0 688
0 689
0 690
0 691
0 692
0 693
0 694
0 695
0 696
0 697
0 698
0 699
0 700
0 701
0 702
0 703
0 704
0 705
0 706
0 707
0 708
0 709
0 710
0 711
0 712
0 713
0 714
0 715
0 716
0 717
0 718
0 719
0 720
0 721
0 722
0 723
0 724
0 725
0 726
0 727
0 728
0 729
0 730
0 731
0 732
0 733
0 734
0 735
0 736
0 737
0 738
0 739
0 740
0 741
0 742
0 743
0 744
0 745
0 746
0 747
0 748
0 749
0 750
0 751
0 752
0 753
0 754
0 755
0 756
0 757
0 758
0 759
0 760
0 761
0 762
0 763
0 764
0 765
0 766
0 767
0 768
0 769
0 770
0 771
0 772
0 773
0 774
0 775
0 776
0 777
0 778
0 779
0 780
0 781
0 782
0 783
0 784
0 785
0 786
0 787
0 788
0 789
0 790
0 791
0 792
0 793
0 794
0 795
0 796
0 797
0 798
0 799
0 800
0 801
0 802
0 803
0 804
0 805
0 806
0 807
0 808
0 809
0 810
0 811
0 812
0 813
0 814
0 815
0 816
0 817
0 818
0 819
0 820
0 821
0 822
0 823
0 824
0 825
0 826
0 827
0 828
0 829
0 830
0 831
0 832
0 833
0 834
0 835
0 836
0 837
0 838
0 839
0 840
0 841
0 842
0 843
0 844
0 845
0 846
0 847
0 848
0 849
0 850
0 851
0 852
0 853
0 854
0 855
0 856
0 857
0 858
0 859
0 860
0 861
0 862
0 863
0 864
0 865
0 866
0 867
0 868
0 869
0 870
0 871
0 872
0 873
0 874
0 875
0 876
0 877
0 878
0 879
0 880
0 881
0 882
0 883
0 884
0 885
0 886
0 887
0 888
0 889
0 890
0 891
0 892
0 893
0 894
0 895
0 896
0 897
0 898
0 899
0 900
0 901
0 902
0 903
0 904
0 905
0 906
0 907
0 908
0 909
0 910
0 911
0 912
0 913
0 914
0 915
0 916
0 917
0 918
0 919
0 920
0 921
0 922
0 923
0 924
0 925
0 926
0 927
0 928
0 929
0 930
0 931
0 932
0 933
0 934
0 935
0 936
0 937
0 938
0 939
0 940
0 941
0 942
0 943
0 944
0 945
0 946
0 947
0 948
0 949
0 950
0 951
0 952
0 953
0 954
0 955
0 956
0 957
0 958
0 959
0 960
0 961
0 962
0 963
0 964
0 965
0 966
0 967
0 968
0 969
0 970
0 971
0 972
0 973
0 974
0 975
0 976
0 977
0 978
0 979
0 980
0 981
0 982
0 983
0 984
0 985
0 986
0 987
0 988
0 989
0 990
0 991
0 992
0 993
0 994
0 995
0 996
0 997
0 998
0 999
0 1000
0 1001
0 1002
0 1003
0 1004
0 1005
0 1006
0 1007
0 1008
0 1009
0 1010
0 1011
0 1012
0 1013
0 1014
0 1015
0 1016
0 1017
0 1018
0 1019
0 1020
0 1021
0 1022
0 1023
0 1024
0 1025
0 1026
0 1027
0 1028
0 1029
0 1030
0 1031
0 1032
0 1033
0 1034
0 1035
0 1036
0 1037
0 1038
0 1039
0 1040
0 1041
0 1042
0 1043
0 1044
0 1045
0 1046
0 1047
0 1048
0 1049
0 1050
0 1051
0 1052
0 1053
0 1054
0 1055
0 1056
0 1057
0 1058
0 1059
0 1060
0 1061
0 1062
0 1063
0 1064
0 1065
0 1066
0 1067
0 1068
0 1069
0 1070
0 1071
0 1072
0 1073
0 1074
0 1075
0 1076
0 1077
0 1078
0 1079
0 1080
0 1081
0 1082
0 1083
0 1084
0 1085
0 1086
0 1087
0 1088
0 1089
0 1090
0 1091
0 1092
0 1093
0 1094
0 1095
0 1096
0 1097
0 1098
0 1099
0 1100
0 1101
0 1102
0 1103
0 1104
0 1105
0 1106
0 1107
0 1108
0 1109
0 1110
0 1111
0 1112
0 1113
0 1114
0 1115
0 1116
0 1117
0 1118
0 1119
0 1120
0 1121
0 1122
0 1123
0 1124
0 1125
0 1126
0 1127
0 1128
0 1129
0 1130
0 1131
0 1132
0 1133
0 1134
0 1135
0 1136
0 1137
0 1138
0 1139
0 1140
0 1141
0 1142
0 1143
0 1144
0 1145
0 1146
0 1147
0 1148
0 1149
0 1150
0 1151
0 1152
0 1153
0 1154
0 1155
0 1156
0 1157
0 1158
0 1159
0 1160
0 1161
0 1162
0 1163
0 1164
0 1165
0 1166
0 1167
0 1168
0 1169
0 1170
0 1171
0 1172
0 1173
0 1174
0 1175
0 1176
0 1177
0 1178
0 1179
0 1180
0 1181
0 1182
0 1183
0 1184
0 1185
0 1186
0 1187
0 1188
0 1189
0 1190
0 1191
0 1192
0 1193
0 1194
0 1195
0 1196
0 1197
0 1198
0 1199
0 1200
0 1201
0 1202
0 1203
0 1204
0 1205
0 1206
0 1207
1 1208
1 1209
0 1210
0 1211
1 1212
1 1213
0 1214
0 1215
0 1216
0 1217
1 1218
1 1219
0 1220
0 1221
0 1222
1 1223
1 1224
0 1225
0 1226
0 1227
1 1228
1 1229
0 1230
0 1231
0 1232
1 1233
1 1234
0 1235
0 1236
0 1237
1 1238
1 1239
0 1240
0 1241
0 1242
1 1243
1 1244
0 1245
0 1246
0 1247
1 1248
1 1249
0 1250
0 1251
0 1252
1 1253
1 1254
0 1255
0 1256
0 1257
1 1258
1 1259
0 1260
0 1261
0 1262
1 1263
1 1264
0 1265
0 1266
0 1267
1 1268
1 1269
0 1270
0 1271
0 1272
1 1273
1 1274
0 1275
0 1276
0 1277
1 1278
1 1279
0 1280
0 1281
0 1282
1 1283
1 1284
0 1285
0 1286
0 1287
1 1288
1 1289
0 1290
0 1291
0 1292
1 1293
1 1294
0 1295
0 1296
0 1297
1 1298
1 1299
0 1300
0 1301
0 1302
1 1303
1 1304
0 1305
0 1306
0 1307
1 1308
1 1309
0 1310
0 1311
0 1312
1 1313
1 1314
0 1315
0 1316
0 1317
1 1318
1 1319
0 1320
0 1321
0 1322
1 1323
1 1324
0 1325
0 1326
0 1327
1 1328
1 1329
0 1330
0 1331
0 1332
1 1333
1 1334
0 1335
0 1336
0 1337
1 1338
1 1339
0 1340
0 1341
0 1342
1 1343
1 1344
0 1345
0 1346
0 1347
1 1348
1 1349
0 1350
0 1351
0 1352
1 1353
1 1354
0 1355
0 1356
0 1357
1 1358
1 1359
1 1360
0 1361
0 1362
0 1363
1 1364
1 1365
0 1366
0 1367
0 1368
1 1369
1 1370
0 1371
0 1372
0 1373
1 1374
1 1375
0 1376
0 1377
0 1378
1 1379
1 1380
0 1381
0 1382
0 1383
1 1384
1 1385
0 1386
0 1387
0 1388
1 1389
1 1390
0 1391
0 1392
0 1393
1 1394
1 1395
0 1396
0 1397
0 1398
1 1399
1 1400
0 1401
0 1402
0 1403
1 1404
1 1405
0 1406
0 1407
0 1408
1 1409
1 1410
0 1411
0 1412
0 1413
1 1414
1 1415
0 1416
0 1417
0 1418
1 1419
1 1420
0 1421
0 1422
0 1423
1 1424
1 1425
0 1426
0 1427
0 1428
1 1429
1 1430
0 1431
0 1432
0 1433
1 1434
1 1435
0 1436
0 1437
0 1438
1 1439
0 1440
0 1441
0 1442
0 1443
0 1444
0 1445
1 1446
1 1447
0 1448
0 1449
0 1450
0 1451
1 1452
1 1453
0 1454
0 1455
1 1456
1 1457
0 1458
0 1459
0 1460
0 1461
1 1462
1 1463
0 1464
0 1465
1 1466
1 1467
0 1468
0 1469
0 1470
1 1471
1 1472
0 1473
0 1474
0 1475
1 1476
1 1477
0 1478
0 1479
0 1480
1 1481
1 1482
0 1483
0 1484
0 1485
1 1486
1 1487
0 1488
0 1489
0 1490
1 1491
1 1492
0 1493
0 1494
0 1495
1 1496
1 1497
0 1498
0 1499
0 1500
1 1501
1 1502
0 1503
0 1504
0 1505
1 1506
1 1507
0 1508
0 1509
0 1510
1 1511
1 1512
0 1513
0 1514
0 1515
1 1516
1 1517
0 1518
0 1519
0 1520
0 1521
0 1522
0 1523
0 1524
0 1525
0 1526
0 1527
0 1528
0 1529
1 1530
1 1531
0 1532
0 1533
0 1534
1 1535
1 1536
0 1537
0 1538
0 1539
1 1540
1 1541
0 1542
0 1543
0 1544
1 1545
1 1546
0 1547
0 1548
0 1549
1 1550
1 1551
0 1552
0 1553
0 1554
1 1555
1 1556
If you want vfr you have to set it all to 0s. That stands for CCCCC match. Hope it helps. I will make a function to mod CTelecine.txt to set a constant pattern from frame x to y. SO by guessing what you get from CTelecine you can guess the pattern and set it without manually do it everytime.
EDIT: I will also make a guess pattern function.
real.finder
13th February 2022, 23:20
you use "CTelecine(thr2=6,edeint2=QTGMC().SelectEven(),inputTxt=true)"
so the vfr will be up to only 30 fps not 60 fps? the point of https://github.com/pinterf/TIVTC/issues/26 is to have vfr that go up to 60 fps in sources like the one in the sample
Ceppo
13th February 2022, 23:56
To output a mixed 60fps, the only way that I can think of is to hide the odd frame from the bobbed clip doubling the height, then have CDecimate put it all together. Is kind of tricky, I need some time to think about it.
Ceppo
15th February 2022, 22:36
I want to give an update: I have been able to make a guess pattern function with minimal error to reduce manual labor. Tomorrow I Will get to the 60fps business. I will make a fake 60fps and all fake frames will be dropped.
Ceppo
17th February 2022, 19:55
Done. But I didn't update the ReadMe file. Maybe tomorrow.
real.finder Source:
This source has no 60i content aside from the dissolve transition. And you won't never get thr2 to deinterlace it without deinterlacing other not 60i frames. You can try if you want. It's just a guess.
#1st pass
#~ CFieldDuplicate(thr2=10,nt=10,write=true)
#2nd pass
#~ Bob().SelectEven()
#~ CSceneChange(SCClip(true,800),write=true)
#3nd pass
#~ CGuessPattern()
#4th pass Check CDecimate and fix post telecine cuts.
CTelecine(inputTxt=true)
Cn(1900)#force n match on ccccc cycle.
Cn(2477)
Cn(2647)
#5th pass Fix wrong scene match due bad SC detection (my fault).
#~ CSetPattern(1360,1439,ncccn=true)
#~ CSetPattern(1445,1519,cnncc=true)
#~ CSetPattern(2535,2594,cnncc=true)
#~ CSetPattern(2595,2649,nnccc=true)
#~ CSetPattern(2650,2729,ccnnc=true)
#~ CSetPattern(2835,2954,ccnnc=true)
#~ CSetPattern(2955,2969,ncccn=true)
#6th pass All done!
CDecimate()
CTelecine(match=false,thr2=3,edeint2=QTGMC().SelectEven())
vinverse()
Result (https://www.mediafire.com/file/utqkylfffetyvyw/30pVFR.mkv/file)
CGuessPattern is all about getting right the scene change and having enough motion in it. Otherwise, it will output a nnccc pattern cuz is the first in the array.
60i VFR test: source and encode download (https://www.mediafire.com/file/bcd7jijr9mx2x1x/60i_test.zip/file)
#Pass-1
#~ CTelecine2(thr2=6,edeint2=QTGMC(),write=true)
#Pass-2 Rename CTelecine2.txt to CTelecine.txt and use CSetPattern and adjust 60i cycles (the ones with all 2s)
#~ CSetPattern(0,54,cccnn=true)
#~ CSetPattern(65,149,cnncc=true)
#Pass-3
CTelecine2(thr2=6,edeint2=QTGMC(),inputTxt=true)
CFieldDeBlend(0.005,bob=CTelecine2(thr=3,edeint=nnedi3(-2)))
CDecimate2()
reduceby2()#random resize
Also I fixed the mistakes in the VFR file.
Also, due to the anime problem, I came up with a new field matching method which is much better but a bit slower. It won't do random n match like TIVTC modes do so this reduces a lot of work, the worst you get is a single n match due to duplicates but is easy to fix with a function that looks backward and forward in search of a compatible pattern. This is the result at least in my tests.
From it comes a better comb detection that I have yet to hard test. And a bob filter that keeps all the progressive part of the picture.
I have yet to implement these. I want to write the filters from scratch because the code is getting noisy and add YV16 and YV24 support. So before I do that please tell me what you guys would like me to add.
kedautinh12
17th February 2022, 20:10
I think you need add HBD for this :D
Ceppo
17th February 2022, 20:26
There is a bug with CDecimate2 instead of taking the odd frame I took the even frame so the 24fps decimation is slightly wrong. I will post the one with the fix tomorrow with the ReadMe file updated.
I think you need add HBD for this
I can't do HBD, I need a sample plugin like invertneg that handles HBD, otherwise, I need to look at the API to understand, and is kind a lot of work since I need to learn a lot of new things :(
real.finder
17th February 2022, 23:59
I still get "cycle at frame ..." errors
I also note CTelecine2.txt start with 3 "0 0"
0 0
0 0
0 0
0 1
0 2
0 3
0 4
0 5
0 6
0 7
0 8
0 9
0 10
0 11
if I did the analysis pass in avspmod, but they will be only 2 if I do it with Virtualdub2 analysis pass
also in case you need more 60i samples https://github.com/pinterf/TIVTC/issues/26
Ceppo
18th February 2022, 01:31
AvspMod does it wrong, for some reason it calls 3 times the first frame. I use x264 preset very fast. You can still use AvspMod if you edit the file, just delete the duplicates at the beginning since it says 3 times frame 0. You might also want to look at the last frame in the txt file.
Thanks for the sample.
real.finder
18th February 2022, 02:31
AvspMod does it wrong, for some reason it calls 3 times the first frame. I use x264 preset very fast. You can still use AvspMod if you edit the file, just delete the duplicates at the beginning since it says 3 times frame 0. You might also want to look at the last frame in the txt file.
Thanks for the sample.
yes with x264 it only one "0 0"
but "cycle at frame ..." errors still there!
Ceppo
18th February 2022, 17:36
I updated the ReadMe and fixed the CDecimate2 bug in the v1.0.3 you can find above. Now it should work correctly.
yes with x264 it only one "0 0"
but "cycle at frame ..." errors still there!
The point of CDecimate is to get the correct decimate. There is no metric to do it right. The only way is to get a 00000, 11000, 01100, 00110, 00011, 10001 pattern every 5 frames. If in the txt file is not so, it will give you an error. I'm working on a way to reduce and minimalize the amount of required editing in the txt file. If you have a live action you often get the right pattern since everything is moving (so you have to edit only the critical parts). On anime, due the duplicates, this doesn't happen so there is a lot of editing to do.
real.finder
19th February 2022, 19:39
The point of CDecimate is to get the correct decimate. There is no metric to do it right. The only way is to get a 00000, 11000, 01100, 00110, 00011, 10001 pattern every 5 frames. If in the txt file is not so, it will give you an error.
If you have a live action you often get the right pattern since everything is moving (so you have to edit only the critical parts). On anime, due the duplicates, this doesn't happen so there is a lot of editing to do.
so if someone work with anime he/she will need so much time edit the file!
isn't better to add an option to just ignore these cases for peoples that dont have time and patient to edit thousands of lines?
also gispos said this about avspmod problem (https://forum.doom9.org/showpost.php?p=1964189&postcount=20)
In my opinion, the error is due to a non-existent option of the plugins. "After initializing, don't write the same frame multiple times"
It would be easy to integrate this option into the plugins!
Programs that display frames or need to initialize other variables when creating the clip must call get_frame multiple times at the beginning.
For example, if the matrix is read, get_frame must be called first. And with each call the plugin writes the frame number.
and I agree with him, since tivtc and others don't have this problem
Ceppo
19th February 2022, 22:01
so if someone work with anime he/she will need so much time edit the file!
isn't better to add an option to just ignore these cases for peoples that dont have time and patient to edit thousands of lines?
also gispos said this about avspmod problem
I understand your concern and you are right. I'm working on it to reduce to the minimum the editing by increasing accuracy. I will also make the option to ignore the error and try some heuristic way to handle those cases.
In my opinion, the error is due to a non-existent option of the plugins. "After initializing, don't write the same frame multiple times"
It would be easy to integrate this option into the plugins!
Programs that display frames or need to initialize other variables when creating the clip must call get_frame multiple times at the beginning.
For example, if the matrix is read, get_frame must be called first. And with each call the plugin writes the frame number.
Thanks a lot for the feedback, I will follow the advice!
EDIT
Also, now I'm working on a new field matching mode, and I'm getting good results.
EDIT 2
I need only to implement the write only thing and write the ReadMe file for the new functions.
Here a preview: 60i VFR (https://www.mediafire.com/file/owa7i7dowhy4sgk/60i_VFR.mkv/file)
WIth this Script:
CTelecineNew(bob=true,inputTxt=true)
CPostProcessing(isbob=true)
CDecimateNew(isBob=true,error=false)
The release will be in the day.
Ceppo
20th February 2022, 17:21
Updated to v1.0.4, feedback is much appreciated.
EDIT
fix'd
real.finder
20th February 2022, 19:28
thanks
with this
#~ CTelecineNew(bob=true,write=true) #1st pass
CTelecineNew(bob=true,inputTxt=true)
CPostProcessing(isbob=true,edeint2=qtgmc)
CDecimateNew(isBob=true,error=false)
I got this
https://i.postimg.cc/kMTtxsC5/Untitled.png (https://postimages.org/)
Ceppo
21st February 2022, 16:40
Sorry, I was in a hurry and I didn't update CTools.avsi.
https://www.mediafire.com/file/tqrbkmv3v16krui/CTools_v1.0.4_%2528fixv2%2529.zip/file
real.finder
21st February 2022, 16:58
Sorry, I was in a hurry and I didn't update CTools.avsi.
https://www.mediafire.com/file/tqrbkmv3v16krui/CTools_v1.0.4_%2528fixv2%2529.zip/file
it work now but with https://xfl.jp/E5n90r I got same frame in all clip with this
#~ CTelecineNew(bob=true,write=true) #1st pass
CTelecineNew(bob=true,inputTxt=true)
CPostProcessing(isbob=true,edeint2=qtgmc)
CDecimateNew(isBob=true,error=false)
Ceppo
21st February 2022, 17:18
Test (https://www.mediafire.com/file/fvth16efk2b8t69/Zodiac_guys.mkv/file)
CTelecineNew(bob=true,inputTxt=true)
CPostProcessing(isbob=true)#QTGMC() is the default
CDecimateNew(isBob=true,error=false)
Aside missing the fade. It looks everything all right to me.
I can't recreate the problem :(
EDIT:
Maybe your CTelecine file is empty??? After the pass you have to close AVSPmod since I didn't yet included a close() function.
real.finder
21st February 2022, 17:54
Test (https://www.mediafire.com/file/fvth16efk2b8t69/Zodiac_guys.mkv/file)
CTelecineNew(bob=true,inputTxt=true)
CPostProcessing(isbob=true)#QTGMC() is the default
CDecimateNew(isBob=true,error=false)
Aside missing the fade. It looks everything all right to me.
I can't recreate the problem :(
EDIT:
Maybe your CTelecine file is empty??? After the pass you have to close AVSPmod since I didn't yet included a close() function.
it's not empty, do I need 3 passes in this case?
Ceppo
21st February 2022, 17:58
it's not empty, do I need 3 passes in this case?
No. There must some kind of other bug.
You are using 64bit or 32bit version? Just to track the problem.
real.finder
21st February 2022, 17:59
No. There must some kind of other bug.
You are using 64bit or 32bit version? Just to track the problem.
64bit
Ceppo
21st February 2022, 18:05
Do you have some people online to make them try on that source? I need to understand if it's a stack related problem.
real.finder
21st February 2022, 18:12
Do you have some people online to make them try on that source? I need to understand if it's a stack related problem.
I didn't get what you mean but I note in every experience some frames show randomly, like in avspmod if I hit f5 in some frame it will change to another
removing CDecimateNew(isBob=true,error=false) line will fix it but this not what we want
Ceppo
21st February 2022, 18:23
Ok, just curios remove inputTxt=true from CTelecine and try again. Also if you could please tell me how much RAM you have.
real.finder
21st February 2022, 18:32
Ok, just curios remove inputTxt=true from CTelecine and try again. Also if you could please tell me how much RAM you have.
it's same
it's rdp server with 64 gb ram
32bit seems ok
Ceppo
21st February 2022, 18:41
So it's a 64bit issue. I will make some changes to reduce the stack, since is the only lead I have at the moment. Hope to release it for tomorrow.
Ceppo
21st February 2022, 23:27
Updated. It was a 30min modification.
v1.0.5
- Reduced stack in CTelecineNew and CDecimateNew
- Now CTelecineNew closes automatically the txt file on last frame.
- Speed improvement.
Hope it works now.
real.finder
22nd February 2022, 00:43
thanks, seems work fine, but there are something
"# timestamp format v1" should be "# timecode format v1"
and with
D2VSource (https://github.com/Asd-g/MPEG2DecPlus#usage)("Hybrid_30p_+_24i_+60i_+_ifade.d2v")
i=last
bob=stgmc (https://github.com/realfinder/AVS-Stuff/blob/Community/avs%202.6%20and%20up/STGMC.avsi)(useEdiExt=2,EdiExt=sanimebob (https://github.com/realfinder/AVS-Stuff/blob/Community/avs%202.5%20and%20up/AnimeIVTC.avsi)(useBWDIF=true, FastNnediHBD=true),Sharpness=0,tr2=2,ESearchP=true, Refinemotion=true, fastma=true)
#~ CTelecineNew(bob=true,write=true,thr60i=0.1)
CTelecineNew(bob=true,thr60i=0.1)
CPostProcessing(0.1,0.9,isbob=true,edeint=i.CPostProcessingMask(bob=bob,nt=4),edeint2=bob)
CDecimateNew(isBob=true,error=false)
it still got some random frames replaced with last frame even in 32bit!
Ceppo
22nd February 2022, 02:28
thr60i in CTelecineNew and thr2 in CPostProcessing must have the same value. Try this way.
If still does that, tomorrow I will look into it (same clip I guess). Also, you are supposed to bob after CTelecineNew.
"# timestamp format v1" should be "# timecode format v1"
Last version of mkvtoolnix doesn't accept that.
real.finder
22nd February 2022, 12:34
thr60i in CTelecineNew and thr2 in CPostProcessing must have the same value. Try this way.
If still does that, tomorrow I will look into it (same clip I guess). Also, you are supposed to bob after CTelecineNew.
I did make thr60i in CTelecineNew and thr2 in CPostProcessing same and it still got problems
the output of CTelecineNew is already 60fps! I think it wrong to do bob with it! but anyway that seems work but the output of bob seems not ok (to many ghosting)
Last version of mkvtoolnix doesn't accept that.
weird, I don't use last mkvtoolnix but it always "# timecode format v1" and all old tools and plugins only work with "# timecode format v1" even the last x264!
Ceppo
22nd February 2022, 18:36
weird, I don't use last mkvtoolnix but it always "# timecode format v1" and all old tools and plugins only work with "# timecode format v1" even the last x264!
Could you please tell me how to input the vfr file with x264. I never done vfr before you asked for it so I don't know much. Since your suggestion seems more compatible I might change it.
I did make thr60i in CTelecineNew and thr2 in CPostProcessing same and it still got problems
the output of CTelecineNew is already 60fps! I think it wrong to do bob with it! but anyway that seems work but the output of bob seems not ok (to many ghosting)
We can do like that: if isBob false, expect double frame rate, if isBob true expect same frame rate, so you can use the bob from the original clip. Does this seems acceptable?
real.finder
22nd February 2022, 18:58
Could you please tell me how to input the vfr file with x264. I never done vfr before you asked for it so I don't know much. Since your suggestion seems more compatible I might change it.
We can do like that: if isBob false, expect double frame rate, if isBob true expect same frame rate, so you can use the bob from the original clip. Does this seems acceptable?
x264 has --tcfile-in for vfr timecode file
so this ok?
i=last
bob=stgmc(useEdiExt=2,EdiExt=sanimebob(useBWDIF=true, FastNnediHBD=true),Sharpness=0,tr2=2,ESearchP=true, Refinemotion=true, fastma=true)
#~ CTelecineNew(bob=true,write=true,thr60i=0.1)
CTelecineNew(bob=false,thr60i=0.1,inputTxt=true)
CPostProcessing(0.1,0.9,isbob=false,edeint=i.CPostProcessingMask(bob=bob,nt=4),edeint2=bob)
CDecimateNew(isBob=false,error=false)
it seems work
edit: and yes it should not act like this for isbob=true, I think for isbob=true case it should "if isBob true expect same frame rate" as you said
Ceppo
22nd February 2022, 21:28
Updated:
v1.0.6
- Fixed wrong frame count on CDecimateNew
- Now CPP expect same frame rate edeint/2 clip when isBob=true.
I didn't do much* testing, I have something going on.
Also you don't need to specify edeint with CCPMask with the same bob clip. It's automatic.
i=last
bob=stgmc(useEdiExt=2,EdiExt=sanimebob(useBWDIF=true, FastNnediHBD=true),Sharpness=0,tr2=2,ESearchP=true, Refinemotion=true, fastma=true)
#~ CTelecineNew(bob=true,write=true,thr60i=0.1)
CTelecineNew(bob=false,thr60i=0.1,inputTxt=true)
CPostProcessing(0.1,0.9,isbob=false,edeint=i.CPostProcessingMask(bob=bob,nt=4),edeint2=bob)
CDecimateNew(isBob=false,error=false)
If Bob false, thr60i is ignored.
real.finder
22nd February 2022, 22:15
thanks, work fine, but the timecode file still "# timestamp format v1"
anyway I will test more with some DVD later
Ceppo
22nd February 2022, 22:24
I forgot, sorry. Tomorrow I will add it with a new parameter for CDecimateNew.
real.finder
22nd February 2022, 23:08
one more thing, and it's about CTelecineNew
in CTelecineNew(bob=true) sometimes it show frame that not same as qtgmc and that makes some artifacts
also instead of just vinverse.dll can we have option to choose alternatives like https://github.com/Dogway/Avisynth-Scripts/blob/eb27d2e9bba62faed1fc0a7b1058d4c115f9b0a4/MIX%20mods/QTGMC.avsi#L1273 ?
Ceppo
22nd February 2022, 23:16
one more thing, and it's about CTelecineNew
in CTelecineNew(bob=true) sometimes it show frame that not same as qtgmc and that makes some artifacts
It does field matching. So 1 field might be dropped for the adiacent while QTGMC does not. And can you give me a picture of those artefacts? QTGMC VS CTelecine VS Original
EDIT: what I said makes no sense. Might be a bug. If you could provide a sample clip that does that and point out some frame.
also instead of just vinverse.dll can we have option to choose alternatives like https://github.com/Dogway/Avisynth-S...GMC.avsi#L1273 ?
It depends by the filter. If it does not blending, it won't work. I'm not feeling well atm, can you give me a comparison of a telecined frame with vinverse vs your vinverse?
real.finder
22nd February 2022, 23:37
It does field matching. So 1 field might be dropped for the adiacent while QTGMC does not. And can you give me a picture of those artefacts? QTGMC VS CTelecine VS Original
It depends by the filter. If it does not blending, it won't work. I'm not feeling well atm, can you give me a comparison of a telecined frame with vinverse vs your vinverse?
I know it do field matching, I didn't mean CTelecine did it but when using it like this
bob=stgmc(tr0=-2,useEdiExt=1,EdiExt=sanimebob(useBWDIF=true, FastNnediHBD=true),Sharpness=0,tr2=5, Refinemotion=true, fastma=true)
#~ CTelecineNew(bob=true,write=true,thr60i=0.2)
CTelecineNew(bob=true,thr60i=0.2,inputTxt=true)
CPostProcessing(0.1,0.9,isbob=true,edeint2=bob)
CDecimateNew(isBob=true,error=false)
https://i.postimg.cc/5tHX8YW9/Untitled.png (https://postimages.org/)
look at the Teeth
tfm kinda do same sometimes, but it's ok with
istff=GetParity()
bobclip=qtgmc
Interleave(TFM(field=istff ? 1 : 0, micmatching=0, mode=0, clip2=bobclip.selecteven()), TFM(field=istff ? 0 : 1, micmatching=0, mode=0, clip2=bobclip.selectodd()))
vinverse originally was a script function by Didée then tritical make it a plugin, but now the dll version is outdated in case of HBD and some other improvements so there are Vinverse_avsi and ex_vinverse since the dll didn't get any updated since 10 years, that why I asked about option to choose alternatives
Ceppo
22nd February 2022, 23:43
I don't have your bob filter to check. Try without using CPostProcessingMask as edeint clip. It might be it failing with your bob filter.
About vinverse, ok. There is a problem, I can't load the page anymore.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.