Emulgator
25th January 2025, 18:23
#[*# +++++++++ Start of Emulgator's QuadCompare 2025-10-28 +++++++++++++++++++++
#avSource="AviSource"
#avSource="DirectShowSource"
#avSource="FFMS2"
avSource1="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource2="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource3="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource4="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
#---------------------------------------------------------
Comparewidth=1280 # use 1280 for 16:9 sources
#Comparewidth=960 # use 960 for 4:3 sources
#Comparewidth=480 # use 480 for mobile phone sources
Compareheight=720
#Compareheight=240
Comparefps=25.0
ManDecOSD=1
MDOverlayFontSize=Ceil(Compareheight/16)
MDOverlayLineOffset=Ceil(Compareheight/8)
MDOverlayTextColorSource1=$00FFFFFF
MDOverlayTextColorSource2=$00FFFF00
MDOverlayTextColorSource3=$00FFAA00
MDOverlayTextColorSource4=$00FF0000
MDOverlayTextColorOut=$00FF88FF
av1="<pathto>\yourfile1.mp4"
av2="<pathto>\yourfile2.mp4"
av3=av1 # leave this as av1 if you have only 2 files to compare, change only to 3rd file path "<pathto>\yourfile3.mp4" if you have a 3rd file to compare
av4=av2 # leave this as av2 if you have 2 or 3 files to compare, change only to 4th file path "<pathto>\yourfile4.mp4" if you have a 4th file to compare
av1name=String(av1)
av2name=String(av2)
av3name=String(av3)
av4name=String(av4)
avwf1=Apply(avSource1,av1).Assumefps(Comparefps).Waveform() # remarks file1
avfc1=ManDecOSD>0 ? ScriptClip(avwf1, function[avwf1,av1name,MDOverlayFontSize,MDOverlayTextColorSource1] \
{Subtitle(avwf1, String(av1name)+": av1 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource1)}) : av1
avwf2=Apply(avSource2,av2).Assumefps(Comparefps).Waveform() # remarks file2
avfc2=ManDecOSD>0 ? ScriptClip(avwf2, function[avwf2,av2name,MDOverlayFontSize,MDOverlayTextColorSource2] \
{Subtitle(avwf2, String(av2name)+": av2 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource2)}) : av2
avwf3=Apply(avSource3,av3).Assumefps(Comparefps).Waveform() # remarks file3
avfc3=ManDecOSD>0 ? ScriptClip(avwf3, function[avwf3,av3name,MDOverlayFontSize,MDOverlayTextColorSource3] \
{Subtitle(avwf3, String(av3name)+": av3 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource3)}) : av3
avwf4=Apply(avSource4,av4).Assumefps(Comparefps).Waveform() # remarks file4
avfc4=ManDecOSD>0 ? ScriptClip(avwf4, function[avwf4,av4name,MDOverlayFontSize,MDOverlayTextColorSource4] \
{Subtitle(avwf4, String(av4name)+": av4 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource4)}) : av4
stack1=Comparewidth>Compareheight ? \
StackVertical((ConvertToYV12(Lanczos4Resize(Trim(avfc1,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc2,0,0),Comparewidth/2,Compareheight/2))) : \
StackHorizontal((ConvertToYV12(Lanczos4Resize(Trim(avfc1,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc2,0,0),Comparewidth/2,Compareheight/2)))
stack2=Comparewidth>Compareheight ? \
StackVertical((ConvertToYV12(Lanczos4Resize(Trim(avfc3,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc4,0,0),Comparewidth/2,Compareheight/2))) : \
StackHorizontal((ConvertToYV12(Lanczos4Resize(Trim(avfc3,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc4,0,0),Comparewidth/2,Compareheight/2)))
Comparewidth>Compareheight ? StackHorizontal(stack1,stack2) : StackVertical(stack1,stack2)
ManDecOSD>0 ? ScriptClip(last, function[last,MDOverlayFontSize,MDOverlayLineOffset,MDOverlayTextColorOut] \
{Subtitle(last, "Outframe "+String(current_frame)+"/"+String(framecount()),size=MDOverlayFontSize,align=5,x=Ceil(width*8/16),y=height/2-MDOverlayLineOffset,text_color=MDOverlayTextColorOut)}) : NOP()
return(last)
#*]# ------ End of Emulgator's QuadCompare 2025-10-28 ------------------
#avSource="AviSource"
#avSource="DirectShowSource"
#avSource="FFMS2"
avSource1="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource2="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource3="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
avSource4="BSSource"# You may use different source filters on the same source here just for a sourcefilter comparison...
#---------------------------------------------------------
Comparewidth=1280 # use 1280 for 16:9 sources
#Comparewidth=960 # use 960 for 4:3 sources
#Comparewidth=480 # use 480 for mobile phone sources
Compareheight=720
#Compareheight=240
Comparefps=25.0
ManDecOSD=1
MDOverlayFontSize=Ceil(Compareheight/16)
MDOverlayLineOffset=Ceil(Compareheight/8)
MDOverlayTextColorSource1=$00FFFFFF
MDOverlayTextColorSource2=$00FFFF00
MDOverlayTextColorSource3=$00FFAA00
MDOverlayTextColorSource4=$00FF0000
MDOverlayTextColorOut=$00FF88FF
av1="<pathto>\yourfile1.mp4"
av2="<pathto>\yourfile2.mp4"
av3=av1 # leave this as av1 if you have only 2 files to compare, change only to 3rd file path "<pathto>\yourfile3.mp4" if you have a 3rd file to compare
av4=av2 # leave this as av2 if you have 2 or 3 files to compare, change only to 4th file path "<pathto>\yourfile4.mp4" if you have a 4th file to compare
av1name=String(av1)
av2name=String(av2)
av3name=String(av3)
av4name=String(av4)
avwf1=Apply(avSource1,av1).Assumefps(Comparefps).Waveform() # remarks file1
avfc1=ManDecOSD>0 ? ScriptClip(avwf1, function[avwf1,av1name,MDOverlayFontSize,MDOverlayTextColorSource1] \
{Subtitle(avwf1, String(av1name)+": av1 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource1)}) : av1
avwf2=Apply(avSource2,av2).Assumefps(Comparefps).Waveform() # remarks file2
avfc2=ManDecOSD>0 ? ScriptClip(avwf2, function[avwf2,av2name,MDOverlayFontSize,MDOverlayTextColorSource2] \
{Subtitle(avwf2, String(av2name)+": av2 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource2)}) : av2
avwf3=Apply(avSource3,av3).Assumefps(Comparefps).Waveform() # remarks file3
avfc3=ManDecOSD>0 ? ScriptClip(avwf3, function[avwf3,av3name,MDOverlayFontSize,MDOverlayTextColorSource3] \
{Subtitle(avwf3, String(av3name)+": av3 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource3)}) : av3
avwf4=Apply(avSource4,av4).Assumefps(Comparefps).Waveform() # remarks file4
avfc4=ManDecOSD>0 ? ScriptClip(avwf4, function[avwf4,av4name,MDOverlayFontSize,MDOverlayTextColorSource4] \
{Subtitle(avwf4, String(av4name)+": av4 f "+String(current_frame)+"/"+String(framecount()),size=height/16,align=9,x=Floor(width*31/32),y=height/16,text_color=MDOverlayTextColorSource4)}) : av4
stack1=Comparewidth>Compareheight ? \
StackVertical((ConvertToYV12(Lanczos4Resize(Trim(avfc1,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc2,0,0),Comparewidth/2,Compareheight/2))) : \
StackHorizontal((ConvertToYV12(Lanczos4Resize(Trim(avfc1,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc2,0,0),Comparewidth/2,Compareheight/2)))
stack2=Comparewidth>Compareheight ? \
StackVertical((ConvertToYV12(Lanczos4Resize(Trim(avfc3,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc4,0,0),Comparewidth/2,Compareheight/2))) : \
StackHorizontal((ConvertToYV12(Lanczos4Resize(Trim(avfc3,0,0),Comparewidth/2,Compareheight/2))),ConvertToYV12(Lanczos4Resize(Trim(avfc4,0,0),Comparewidth/2,Compareheight/2)))
Comparewidth>Compareheight ? StackHorizontal(stack1,stack2) : StackVertical(stack1,stack2)
ManDecOSD>0 ? ScriptClip(last, function[last,MDOverlayFontSize,MDOverlayLineOffset,MDOverlayTextColorOut] \
{Subtitle(last, "Outframe "+String(current_frame)+"/"+String(framecount()),size=MDOverlayFontSize,align=5,x=Ceil(width*8/16),y=height/2-MDOverlayLineOffset,text_color=MDOverlayTextColorOut)}) : NOP()
return(last)
#*]# ------ End of Emulgator's QuadCompare 2025-10-28 ------------------