; Copyright (C) 2006 Buzzqw (Andres Zanzani)
;
; Homepage: www.64k.it/andres
; E-mail: azanzani@gmail.com
; License: GPL v3 or superior
; PureBasic Visual Designer v3.95 build 1485 (PB4Code)
IncludeFile "AutoFF_Common.pb"
Global pexe.s,file.s,line.s,pffmpeg.s,pathinput.s,inputfile.s,exts.s,mess.s,mess1.s,demuxer35.s,mess2.s
Global ar.s,twidth.f,theight.f,framecount.f,framerate.f,tsec.f,previusfile.s,top.s,audiocount.l
Global vcrop.s,actop.l,acbottom.l,acright.l,acleft.l,pmplayer.s,vcrop1.s,exe.s,aacodec.l,aacprofilename.l
Global width.f,height.f,parse.s,Value.s,ffmpegbat.s,passx.s,oraminuti.s,log.s,Dimb.f,dest.s
Global profilefile.s,audiod2v.s,aspectinfo.f,framecount.f,x264.s, stop.l,here.s
Global Dim codec.s(1000)
Global Dim audiotracklist.s(1000)
Global Dim inputfileorder.s(1000)
;C:\Programmi\PureBasic410\_test files>ffmpeg -i _aaa.vob -vcodec rawvideo -pix_fmt yuv420p -r 25 -f rawvideo - | x264 --crf 18 -o test.mp4 --fps 25.0 - 640x352
Declare loadcodec()
Declare addtoqueue()
Procedure Dimb()
Dimb.f=ValF(GetGadgetText(#cd))*1024*1024
If GetGadgetText(#cd)="Unlimited"
Dimb.f=1099511627776
EndIf
framecount.f=ValF(GetGadgetText(#framecountshow))
tsec.f=ValF(GetGadgetText(#movielenght))
framerate.f=ValF(GetGadgetText(#framerateinfo))
framecount.f=tsec.f*framerate.f
bitrate.f=(Dimb.f-framecount.f*24-(ValF(GetGadgetText(#ab))*tsec.f*0.128))/(tsec.f*0.128/1000)/1000
SetGadgetText(#b,StrF(bitrate.f,0))
EndProcedure
Procedure buildbat()
Debug("sono in buildbat")
ffmpegbat.s=""
ffmpegbat.s=Chr(34)+pffmpeg.s+Chr(34)+" "
If LCase(GetExtensionPart(inputfile.s))="d2v"
CreateFile(999,dest.s+"inputfile.avs")
WriteString(999,"mpeg2source("+Chr(34)+inputfile.s+Chr(34)+")")
CloseFile(999)
inputfile.s=dest.s+"inputfile.avs"
EndIf
ffmpegbat.s=ffmpegbat.s+" -i "+Chr(34)+inputfile.s+Chr(34)+" "
If GetGadgetState(#vn)=0 And GetGadgetState(#copyvideo)<>1
ffmpegbat.s=ffmpegbat.s+" -vcodec "+GetGadgetText(#vcodec)+" "
ffmpegbat.s=ffmpegbat.s+" -f "+GetGadgetText(#container)+" "
If GetGadgetText(#threads)<>""
ffmpegbat.s=ffmpegbat.s+" -threads "+GetGadgetText(#threads)+" "
EndIf
If GetGadgetText(#cropleft)<>""
ffmpegbat.s=ffmpegbat.s+" -cropleft "+Str(acleft.l)+" "
EndIf
If GetGadgetText(#croptop)<>""
ffmpegbat.s=ffmpegbat.s+" -croptop "+Str(actop.l)+" "
EndIf
If GetGadgetText(#cropright)<>""
ffmpegbat.s=ffmpegbat.s+" -cropright "+Str(acright.l)+" "
EndIf
If GetGadgetText(#cropbottom)<>""
ffmpegbat.s=ffmpegbat.s+" -cropbottom "+Str(acbottom.l)+" "
EndIf
If GetGadgetText(#heightresize)<>""
If GetGadgetText(#sws)<>"bicubic" : ffmpegbat.s=ffmpegbat.s+" -sws_flags "+Str(GetGadgetState(#sws))+" " : EndIf
ffmpegbat.s=ffmpegbat.s+" -s "+GetGadgetText(#widthresize)+"x"+GetGadgetText(#heightresize)+" "
If GetGadgetText(#aspect)<>"" : ffmpegbat.s=ffmpegbat.s+"-aspect "+GetGadgetText(#aspect)+" ": EndIf
EndIf
If passx.s="0" : ffmpegbat.s=ffmpegbat.s+"-b "+GetGadgetText(#b)+" " : EndIf
If passx.s="1" : ffmpegbat.s=ffmpegbat.s+"-pass 1 -b "+GetGadgetText(#b)+" " : EndIf
If passx.s="2" : ffmpegbat.s=ffmpegbat.s+"-pass 2 -b "+GetGadgetText(#b)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-bf "+Str(GetGadgetState(#bf))+" "
If GetGadgetText(#brd_scale)<>"-1"
ffmpegbat.s=ffmpegbat.s+"-brd_scale "+GetGadgetText(#brd_scale)+" "
EndIf
If GetGadgetText(#bufsize)<>"" : ffmpegbat.s=ffmpegbat.s+"-bufsize "+GetGadgetText(#bufsize)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-cmp "+Str(GetGadgetState(#cmp))+" "
If GetGadgetText(#border_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-border_mask "+GetGadgetText(#border_mask)+" " : EndIf
If GetGadgetText(#dark_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-dark_mask "+GetGadgetText(#dark_mask)+" " : EndIf
If GetGadgetText(#lavclumi_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-lumi_mask "+GetGadgetText(#lavclumi_mask)+" " : EndIf
If GetGadgetText(#tcplx_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-tcplx_mask "+GetGadgetText(#tcplx_mask)+" " : EndIf
If GetGadgetText(#p_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-p_mask "+GetGadgetText(#p_mask)+" " : EndIf
If GetGadgetText(#scplx_mask)<>"" : ffmpegbat.s=ffmpegbat.s+"-scplx_mask "+GetGadgetText(#scplx_mask)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-dia_size "+GetGadgetText(#dia_size)+" "
ffmpegbat.s=ffmpegbat.s+"-preme "+Str(GetGadgetState(#preme))+" "
If GetGadgetText(#b_qfactor)<>"" : ffmpegbat.s=ffmpegbat.s+"-b_qfactor "+GetGadgetText(#b_qfactor)+" " : EndIf
If GetGadgetText(#b_qoffset)<>"" : ffmpegbat.s=ffmpegbat.s+"-b_qoffset "+GetGadgetText(#b_qoffset)+" " : EndIf
If GetGadgetText(#b_sensitivity)<>"" : ffmpegbat.s=ffmpegbat.s+"-b_sensitivity "+GetGadgetText(#b_sensitivity)+" " : EndIf
If GetGadgetText(#b_strategy)<>"" : ffmpegbat.s=ffmpegbat.s+"-b_strategy "+GetGadgetText(#b_strategy)+" " : EndIf
If GetGadgetText(#bframebias)<>"" : ffmpegbat.s=ffmpegbat.s+"-bframebias "+GetGadgetText(#bframebias)+" " : EndIf
If GetGadgetText(#bidir_refine)<>"" : ffmpegbat.s=ffmpegbat.s+"-bidir_refine "+GetGadgetText(#bidir_refine)+" " : EndIf
If GetGadgetText(#chromaoffset)<>"" : ffmpegbat.s=ffmpegbat.s+"-chromaoffset "+GetGadgetText(#chromaoffset)+" " : EndIf
If GetGadgetText(#complexityblur)<>"" : ffmpegbat.s=ffmpegbat.s+"-complexityblur "+GetGadgetText(#complexityblur)+" " : EndIf
If GetGadgetText(#i_qfactor)<>"" : ffmpegbat.s=ffmpegbat.s+"-i_qfactor "+GetGadgetText(#i_qfactor)+" " : EndIf
If GetGadgetText(#i_qoffset)<>"" : ffmpegbat.s=ffmpegbat.s+"-i_qoffset "+GetGadgetText(#i_qoffset)+" " : EndIf
;If GetGadgetState(#ic)=1 : ffmpegbat.s=ffmpegbat.s+"-ic " : EndIf
If GetGadgetText(#last_pred)<>"" : ffmpegbat.s=ffmpegbat.s+"-last_pred "+GetGadgetText(#last_pred)+" " : EndIf
If GetGadgetText(#maxrate)<>"" : ffmpegbat.s=ffmpegbat.s+"-maxrate "+GetGadgetText(#maxrate)+" " : EndIf
If GetGadgetText(#mb_threshold)<>"" : ffmpegbat.s=ffmpegbat.s+"-mb_threshold "+GetGadgetText(#mb_threshold)+" " : EndIf
If GetGadgetText(#mbcmp)<>"" : ffmpegbat.s=ffmpegbat.s+"-mbcmp "+Str(GetGadgetState(#mbcmp))+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-mbd "+Str(GetGadgetState(#mbd))+" "
If GetGadgetText(#me_method)<>"" : ffmpegbat.s=ffmpegbat.s+"-me_method "+Str(GetGadgetState(#me_method))+" " : EndIf
If GetGadgetText(#me_range)<>"" : ffmpegbat.s=ffmpegbat.s+"-me_range "+GetGadgetText(#me_range)+" " : EndIf
If GetGadgetText(#me_threshold)<>"" : ffmpegbat.s=ffmpegbat.s+"-me_threshold "+GetGadgetText(#me_threshold)+" " : EndIf
If GetGadgetText(#mepc)<>"" : ffmpegbat.s=ffmpegbat.s+"-mepc "+GetGadgetText(#mepc)+" " : EndIf
If GetGadgetText(#minrate)<>"" : ffmpegbat.s=ffmpegbat.s+"-minrate "+GetGadgetText(#minrate)+" " : EndIf
If GetGadgetText(#mv0_threshold)<>"" : ffmpegbat.s=ffmpegbat.s+"-mv0_threshold "+GetGadgetText(#mv0_threshold)+" " : EndIf
If GetGadgetText(#pre_dia_size)<>"" : ffmpegbat.s=ffmpegbat.s+"-pre_dia_size "+GetGadgetText(#pre_dia_size)+" " : EndIf
If GetGadgetText(#precmp)<>"" : ffmpegbat.s=ffmpegbat.s+"-precmp "+Str(GetGadgetState(#precmp))+" " : EndIf
If GetGadgetText(#qmax)<>"" : ffmpegbat.s=ffmpegbat.s+"-qmax "+GetGadgetText(#qmax)+" " : EndIf
If GetGadgetText(#qmin)<>"" : ffmpegbat.s=ffmpegbat.s+"-qmin "+GetGadgetText(#qmin)+" " : EndIf
If GetGadgetText(#qns)<>"-1" : ffmpegbat.s=ffmpegbat.s+"-qns "+GetGadgetText(#qns)+" " : EndIf
If GetGadgetText(#rc_strategy)<>"" : ffmpegbat.s=ffmpegbat.s+"-rc_strategy "+GetGadgetText(#rc_strategy)+" " : EndIf
If GetGadgetText(#lavcgop)<>"" : ffmpegbat.s=ffmpegbat.s+"-g "+GetGadgetText(#lavcgop)+" " : EndIf
If GetGadgetText(#author)<>"" : ffmpegbat.s=ffmpegbat.s+"-author "+GetGadgetText(#author)+" " : EndIf
If GetGadgetText(#comment)<>"" : ffmpegbat.s=ffmpegbat.s+"-comment "+GetGadgetText(#comment)+" " : EndIf
If GetGadgetText(#copyright)<>"" : ffmpegbat.s=ffmpegbat.s+"-copyright "+Chr(34)+GetGadgetText(#copyright)+Chr(34)+" " : EndIf
If GetGadgetText(#year)<>"" : ffmpegbat.s=ffmpegbat.s+"-year "+GetGadgetText(#year)+" " : EndIf
If GetGadgetText(#timestamp)<>"" : ffmpegbat.s=ffmpegbat.s+"-timestamp "+GetGadgetText(#timestamp)+" " : EndIf
If GetGadgetText(#title)<>"" : ffmpegbat.s=ffmpegbat.s+"-title "+GetGadgetText(#title)+" " : EndIf
If GetGadgetState(#async)=1 : ffmpegbat.s=ffmpegbat.s+"-async " : EndIf
If GetGadgetState(#relavc)=1 : ffmpegbat.s=ffmpegbat.s+"-re " : EndIf
If GetGadgetState(#sameq)=1 : ffmpegbat.s=ffmpegbat.s+"-sameq " : EndIf
If GetGadgetText(#sc_factor)<>"" : ffmpegbat.s=ffmpegbat.s+"-sc_factor "+GetGadgetText(#sc_factor)+" " : EndIf
If GetGadgetText(#sc_threshold)<>"" : ffmpegbat.s=ffmpegbat.s+"-sc_threshold "+GetGadgetText(#sc_threshold)+" " : EndIf
If GetGadgetText(#subcmp)<>"" : ffmpegbat.s=ffmpegbat.s+"-subcmp "+Str(GetGadgetState(#subcmp))+" " : EndIf
If GetGadgetText(#subq)<>"" : ffmpegbat.s=ffmpegbat.s+"-subq "+GetGadgetText(#subq)+" " : EndIf
If GetGadgetState(#verbose)=1 : ffmpegbat.s=ffmpegbat.s+"-v 5 " : EndIf
If GetGadgetState(#vsync)=1 : ffmpegbat.s=ffmpegbat.s+"-vsync " : EndIf
If GetGadgetState(#interlaced)=1 : ffmpegbat.s=ffmpegbat.s+"-deinterlace " : EndIf
If GetGadgetText(#noisereduction)<>"" : ffmpegbat.s=ffmpegbat.s+"-nr "+GetGadgetText(#noisereduction)+" " : EndIf
If GetGadgetText(#top)="TOP"
ffmpegbat.s=ffmpegbat.s+"-top 1 "
EndIf
If GetGadgetText(#top)="BFF"
ffmpegbat.s=ffmpegbat.s+"-top 0 "
EndIf
If GetGadgetText(#top)="AUTO"
ffmpegbat.s=ffmpegbat.s+"-top -1 "
EndIf
If GetGadgetText(#rframe)<>"NONE" : ffmpegbat.s=ffmpegbat.s+"-r "+GetGadgetText(#rframe)+" " : EndIf
If GetGadgetText(#vtag)<>"" : ffmpegbat.s=ffmpegbat.s+"-vtag "+GetGadgetText(#vtag)+" " : EndIf
If GetGadgetText(#addcommand)<>"" : ffmpegbat.s=ffmpegbat.s+" "+GetGadgetText(#addcommand)+" " : EndIf
If GetGadgetState(#an)=0 And GetGadgetState(#audiocopy)=0 And audiod2v.s<>"false"
If passx.s<>"1"
ffmpegbat.s=ffmpegbat.s+"-acodec "+GetGadgetText(#acodec)+" "
ffmpegbat.s=ffmpegbat.s+"-ab "+GetGadgetText(#ab)+" "
If Val(GetGadgetText(#AR))>4000 : ffmpegbat.s=ffmpegbat.s+"-ar "+GetGadgetText(#AR)+" " : EndIf
If GetGadgetText(#volume)<>"" : ffmpegbat.s=ffmpegbat.s+"-vol "+GetGadgetText(#volume)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-ac "+GetGadgetText(#ac)+" "
If GetGadgetState(#audiotrack)>0
ffmpegbat.s=ffmpegbat.s+"-map [0:0] -map ["+Str(GetGadgetState(#audiotrack)+1)+":0] "
EndIf
EndIf
EndIf
If GetGadgetState(#an)=0 And GetGadgetState(#audiocopy)=0 And audiod2v.s<>"false" And passx.s="1"
ffmpegbat.s=ffmpegbat.s+" -an "
EndIf
If GetGadgetState(#an)=0 And GetGadgetState(#audiocopy)=1
If passx.s<>"1"
ffmpegbat.s=ffmpegbat.s+"-acodec copy "
EndIf
EndIf
ffmpegbat.s=ffmpegbat.s+"-flags "
If GetGadgetState(#aic)=1 : ffmpegbat.s=ffmpegbat.s+"aic+" : EndIf
If GetGadgetState(#mv4)=1 : ffmpegbat.s=ffmpegbat.s+"mv4+" : EndIf
If GetGadgetState(#obmc)=1 : ffmpegbat.s=ffmpegbat.s+"obmc+" : EndIf
If GetGadgetState(#lavcqpel)=1 : ffmpegbat.s=ffmpegbat.s+"qpel+" : EndIf
If GetGadgetState(#loop)=1 : ffmpegbat.s=ffmpegbat.s+"loop+" : EndIf
If GetGadgetState(#gmc)=1 : ffmpegbat.s=ffmpegbat.s+"gmc+" : EndIf
If GetGadgetState(#mv0flags)=1 : ffmpegbat.s=ffmpegbat.s+"mv0+" : EndIf
If GetGadgetState(#part)=1 : ffmpegbat.s=ffmpegbat.s+"part+" : EndIf
If GetGadgetState(#grayscale)=1 : ffmpegbat.s=ffmpegbat.s+"gray+" : EndIf
If GetGadgetState(#naq)=1 : ffmpegbat.s=ffmpegbat.s+"naq+" : EndIf
If GetGadgetState(#ildct)=1 : ffmpegbat.s=ffmpegbat.s+"ildct+" : EndIf
If GetGadgetState(#ilme)=1 : ffmpegbat.s=ffmpegbat.s+"ilme+" : EndIf
If GetGadgetState(#aiv)=1 : ffmpegbat.s=ffmpegbat.s+"aiv+" : EndIf
If GetGadgetState(#bitexact)=1 : ffmpegbat.s=ffmpegbat.s+"bitexact+" : EndIf
If GetGadgetState(#cbp)=1 : ffmpegbat.s=ffmpegbat.s+"cbp+" : EndIf
If GetGadgetState(#cgop)=1 : ffmpegbat.s=ffmpegbat.s+"cgop+" : EndIf
If GetGadgetState(#low_delay)=1 : ffmpegbat.s=ffmpegbat.s+"low_delay+" : EndIf
If GetGadgetState(#part)=1 : ffmpegbat.s=ffmpegbat.s+"part+" : EndIf
If GetGadgetState(#qprd)=1 : ffmpegbat.s=ffmpegbat.s+"qprd+" : EndIf
If GetGadgetState(#trell)=1 : ffmpegbat.s=ffmpegbat.s+"trell+" : EndIf
If GetGadgetState(#umv)=1 : ffmpegbat.s=ffmpegbat.s+"umv+" : EndIf
ffmpegbat.s=Mid(ffmpegbat.s,0,Len(ffmpegbat.s)-1)+" "
If FindString(GetGadgetText(#vcodec),"264",0)
If GetGadgetText(#refs)<>"" : ffmpegbat.s+"-refs "+GetGadgetText(#refs)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-deblockalpha "+GetGadgetText(#deblockalpha)+" "
ffmpegbat.s=ffmpegbat.s+"-deblockbeta "+GetGadgetText(#deblockbeta)+" "
If GetGadgetText(#level)<>"" : ffmpegbat.s+"-level "+GetGadgetText(#level)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-trellis "+Str(GetGadgetState(#x264trellis))+" "
ffmpegbat.s=ffmpegbat.s+"-coder 1 "
If GetGadgetState(#drop_frame_timecode)=1 : ffmpegbat.s=ffmpegbat.s+"-drop_frame_timecode " : EndIf
If GetGadgetState(#ivlc)=1 : ffmpegbat.s=ffmpegbat.s+"-ivlc " : EndIf
If GetGadgetState(#local_header)=1 : ffmpegbat.s=ffmpegbat.s+"-local_header " : EndIf
If GetGadgetState(#sgop)=1 : ffmpegbat.s=ffmpegbat.s+"-sgop " : EndIf
If GetGadgetState(#noout)=1 : ffmpegbat.s=ffmpegbat.s+"-noout " : EndIf
If GetGadgetState(#skiprd)=1 : ffmpegbat.s=ffmpegbat.s+"-skiprd " : EndIf
If GetGadgetState(#non_linear_q)=1 : ffmpegbat.s=ffmpegbat.s+"-non_linear_q " : EndIf
If GetGadgetState(#parti4x4)=1 Or GetGadgetState(#parti8x8)=1 Or GetGadgetState(#partp4x4)=1 Or GetGadgetState(#partp8x8)=1 Or GetGadgetState(#partb8x8)=1
If GetGadgetState(#nonepartition)=0
ffmpegbat.s=ffmpegbat.s+"-partitions "
If GetGadgetState(#parti4x4)=1 : ffmpegbat.s=ffmpegbat.s+"+parti4x4" : EndIf
If GetGadgetState(#parti8x8)=1 : ffmpegbat.s=ffmpegbat.s+"+parti8x8" : EndIf
If GetGadgetState(#partp8x8)=1 : ffmpegbat.s=ffmpegbat.s+"+partp8x8" : EndIf
If GetGadgetState(#partp4x4)=1 : ffmpegbat.s=ffmpegbat.s+"+partp4x4" : EndIf
If GetGadgetState(#partb8x8)=1 : ffmpegbat.s=ffmpegbat.s+"+partb8x8" : EndIf
ffmpegbat.s=ffmpegbat.s+" "
EndIf
EndIf
If GetGadgetState(#bpyramid)=1 Or GetGadgetState(#wpred)=1 Or GetGadgetState(#brdo)=1 Or GetGadgetState(#mixed_refs)=1 Or GetGadgetState(#dct8x8)=1 Or GetGadgetState(#fastpskip)=1 Or GetGadgetState(#aud)=1
; If GetGadgetState(#bpyramid)=1 Or GetGadgetState(#brdo)=1 Or GetGadgetState(#mixed_refs)=1 Or GetGadgetState(#dct8x8)=1 Or GetGadgetState(#fastpskip)=1 Or GetGadgetState(#aud)=1
ffmpegbat.s=ffmpegbat.s+"-flags2 "
If GetGadgetState(#bpyramid)=1 : ffmpegbat.s=ffmpegbat.s+"bpyramid" : EndIf
If GetGadgetState(#wpred)=1 : ffmpegbat.s=ffmpegbat.s+"+wpred" : EndIf
If GetGadgetState(#brdo)=1 : ffmpegbat.s=ffmpegbat.s+"+brdo" : EndIf
If GetGadgetState(#mixed_refs)=1 : ffmpegbat.s=ffmpegbat.s+"+mixed_refs" : EndIf
If GetGadgetState(#dct8x8)=1 : ffmpegbat.s+"+dct8x8" : EndIf
If GetGadgetState(#fastpskip)=1 : ffmpegbat.s=ffmpegbat.s+"+fastpskip" : EndIf
If GetGadgetState(#aud)=1 : ffmpegbat.s=ffmpegbat.s+"+aud" : EndIf
ffmpegbat.s=ffmpegbat.s+" "
EndIf
EndIf
EndIf
If GetGadgetState(#copyvideo)=0 And GetGadgetState(#audiocopy)=0 And GetGadgetState(#vn)=1
ffmpegbat.s=ffmpegbat.s+"-acodec "+GetGadgetText(#acodec)+" "
ffmpegbat.s=ffmpegbat.s+"-ab "+GetGadgetText(#ab)+" "
If Val(GetGadgetText(#AR))>4000 : ffmpegbat.s=ffmpegbat.s+"-ar "+GetGadgetText(#AR)+" " : EndIf
If GetGadgetText(#volume)<>"" : ffmpegbat.s=ffmpegbat.s+"-vol "+GetGadgetText(#volume)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-ac "+GetGadgetText(#ac)+" "
If GetGadgetState(#audiotrack)>0
ffmpegbat.s=ffmpegbat.s+"-map [0:0] -map ["+Str(GetGadgetState(#audiotrack)+1)+":0] "
EndIf
EndIf
If GetGadgetState(#copyvideo)=1
ffmpegbat.s=ffmpegbat.s+" -f "+GetGadgetText(#container)+" "
If GetGadgetText(#vtag)<>"" : ffmpegbat.s=ffmpegbat.s+"-vtag "+GetGadgetText(#vtag)+" " : EndIf
If GetGadgetText(#addcommand)<>"" : ffmpegbat.s=ffmpegbat.s+" "+GetGadgetText(#addcommand)+" " : EndIf
If GetGadgetState(#an)=0 And GetGadgetState(#audiocopy)=0
ffmpegbat.s=ffmpegbat.s+"-acodec "+GetGadgetText(#acodec)+" "
ffmpegbat.s=ffmpegbat.s+"-ab "+GetGadgetText(#ab)+" "
If Val(GetGadgetText(#AR))>4000 : ffmpegbat.s=ffmpegbat.s+"-ar "+GetGadgetText(#AR)+" " : EndIf
ffmpegbat.s=ffmpegbat.s+"-vol "+GetGadgetText(#volume)+" "
ffmpegbat.s=ffmpegbat.s+"-ac "+GetGadgetText(#ac)+" "
If GetGadgetState(#audiotrack)>0
ffmpegbat.s=ffmpegbat.s+"-map [0:0] -map ["+Str(GetGadgetState(#audiotrack)+1)+":0] "
EndIf
EndIf
If GetGadgetState(#an)=0 And GetGadgetState(#audiocopy)=1
ffmpegbat.s=ffmpegbat.s+"-copyts -acodec copy "
EndIf
ffmpegbat.s=ffmpegbat.s+"-vcodec copy "
EndIf
If passx.s="0" Or passx.s="2"
If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf
ffmpegbat.s=ffmpegbat.s+" -y "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF."+GetGadgetText(#container)+Chr(34)+" "
EndIf
If passx.s="1"
ffmpegbat.s=ffmpegbat.s+" -y "+Chr(34)+dest.s+"delete."+GetGadgetText(#container)+Chr(34)
EndIf
ffmpegbat.s=ReplaceString(ffmpegbat.s," "," ")
If GetGadgetState(#pipetox264)=1
ffmpegbat.s=""
;C:\Programmi\PureBasic410\_test files>ffmpeg -i _aaa.vob -vcodec rawvideo
;-pix_fmt yuv420p -r 25 -f rawvideo - | x264 --crf 18 -o test.mp4 --fps 25.0 - 640x352
x264.s=""
x264.s=x264.s+Chr(34)+pffmpeg.s+Chr(34)+" -i "+Chr(34)+inputfile.s+Chr(34)+" -vcodec rawvideo -pix_fmt yuv420p "
If GetGadgetText(#rframe)<>"NONE"
x264.s=x264.s+"-r "+GetGadgetText(#rframe)+" "
EndIf
If GetGadgetText(#rframe)="NONE"
x264.s=x264.s+"-r "+GetGadgetText(#framerateinfo)+" "
EndIf
If GetGadgetState(#vn)=0 And GetGadgetState(#copyvideo)<>1
If GetGadgetText(#cropleft)<>""
x264.s=x264.s+" -cropleft "+Str(acleft.l)+" "
EndIf
If GetGadgetText(#croptop)<>""
x264.s=x264.s+" -croptop "+Str(actop.l)+" "
EndIf
If GetGadgetText(#cropright)<>""
x264.s=x264.s+" -cropright "+Str(acright.l)+" "
EndIf
If GetGadgetText(#cropbottom)<>""
x264.s=x264.s+" -cropbottom "+Str(acbottom.l)+" "
EndIf
If GetGadgetText(#heightresize)<>""
If GetGadgetText(#sws)<>"bicubic" : x264.s=x264.s+" -sws_flags "+Str(GetGadgetState(#sws))+" " : EndIf
x264.s=x264.s+" -s "+GetGadgetText(#widthresize)+"x"+GetGadgetText(#heightresize)+" "
If GetGadgetText(#aspect)<>"" : x264.s=x264.s+"-aspect "+GetGadgetText(#aspect)+" ": EndIf
EndIf
x264.s=x264.s+"-f rawvideo - |x264 - "
If passx.s="0" : x264.s=x264.s+"--bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
If passx.s="1" : x264.s=x264.s+"--pass 1 --bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
If passx.s="2" : x264.s=x264.s+"--pass 2 --bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
x264.s=x264.s+"--progress "
x264.s=x264.s+"--ref "+GetGadgetText(#x264refs)+" "
x264.s=x264.s+"--deblock "+GetGadgetText(#x264deblockalpha)+","+GetGadgetText(#x264deblockbeta)+" "
If GetGadgetText(#x264directpred)<>"None" : x264.s=x264.s+"--direct "+LCase(GetGadgetText(#x264directpred))+" " : EndIf
x264.s=x264.s+"--subme "+GetGadgetText(#x264subme)+" "
x264.s=x264.s+"--trellis "+GetGadgetText(#x264trellis)+" "
x264.s=x264.s+"--me "+GetGadgetText(#x264me)+" "
If GetGadgetText(#x264minkeyint)<>"" : x264.s=x264.s+"--min-keyint "+GetGadgetText(#x264minkeyint)+" " : EndIf
If GetGadgetText(#x264keyint)<>"" : x264.s+"--keyint "+GetGadgetText(#x264keyint)+" " : EndIf
x264.s=x264.s+"--merange "+GetGadgetText(#x264merange)+" "
x264.s=x264.s+"--bframes "+Str((GetGadgetState(#x264bframes)))+" "
If GetGadgetText(#x264aqmode)<>"" : x264.s=x264.s+"--aq-mode "+Str(GetGadgetState(#x264aqmode))+" " : EndIf
If GetGadgetText(#x264aqstrenght)<>"" : x264.s=x264.s+"--aq-strength "+Str(GetGadgetState(#x264aqstrenght))+" " : EndIf
If GetGadgetText(#x264qpstep)<>"" : x264.s=x264.s+"--qpstep "+GetGadgetText(#x264qpstep)+" " : EndIf
If GetGadgetText(#x264ratetol)<>"" : x264.s=x264.s+"--ratetol "+GetGadgetText(#x264ratetol)+" " : EndIf
If GetGadgetState(#x264brdo)=1 : x264.s=x264.s+"--b-rdo " : EndIf
If GetGadgetState(#x264mixed_refs)=1 : x264.s=x264.s+"--mixed-refs " : EndIf
If GetGadgetState(#x264fastpskip)=1 : x264.s=x264.s+"--no-fast-pskip " : EndIf
If GetGadgetState(#x264bime)=1 : x264.s=x264.s+"--bime " : EndIf
If GetGadgetState(#x264weightb)=1 : x264.s=x264.s+"--weightb " : EndIf
If GetGadgetState(#x264bpyramid)=1 : x264.s=x264.s+"--b-pyramid " : EndIf
If GetGadgetState(#x264wpred)=1 : x264.s=x264.s+"--wpred " : EndIf
If GetGadgetState(#x264parti4x4)=1 Or GetGadgetState(#x264parti8x8)=1 Or GetGadgetState(#x264partp4x4)=1 Or GetGadgetState(#x264partp8x8)=1 Or GetGadgetState(#x264partb8x8)=1
If Or GetGadgetState(#x264allpartition)=0
x264.s=x264.s+"--partitions "
If GetGadgetState(#parti4x4)=1 : x264.s=x264.s+"i4x4," : EndIf
If GetGadgetState(#parti8x8)=1 : x264.s=x264.s+"i8x8," : EndIf
If GetGadgetState(#partp8x8)=1 : x264.s=x264.s+"p8x8," : EndIf
If GetGadgetState(#partp4x4)=1 : x264.s=x264.s+"p4x4," : EndIf
If GetGadgetState(#partb8x8)=1 : x264.s=x264.s+"b8x8," : EndIf
If Right(x264.s,1)="," : x264.s=RSet(x264.s,Len(x264.s)-1)+" " : EndIf
x264.s=x264.s+" "
EndIf
EndIf
If GetGadgetState(#x264allpartition)=1
x264.s=x264.s+"--partitions all --8x8dct "
EndIf
If GetGadgetState(#x264dct8x8)=1
If GetGadgetState(#x264allpartition)=0
x264.s=x264.s+"--8x8dct "
EndIf
EndIf
If GetGadgetText(#x264level)<>"" : x264.s+"--level "+GetGadgetText(#x264level)+" " : EndIf
If GetGadgetText(#x264vbvinit)<>"" : x264.s+"--vbv-init "+GetGadgetText(#x264vbvinit)+" " : EndIf
If GetGadgetText(#x264vbvmaxrate)<>"" : x264.s+"--vbv-maxrate "+GetGadgetText(#x264vbvmaxrate)+" " : EndIf
If GetGadgetText(#x264vbvbufsize)<>"" : x264.s+"--vbv-bufsize "+GetGadgetText(#x264vbvbufsize)+" " : EndIf
If GetGadgetText(#rframe)<>"NONE"
x264.s=x264.s+"--fps "+GetGadgetText(#rframe)+" "
EndIf
If GetGadgetText(#rframe)="NONE"
x264.s=x264.s+"--fps "+GetGadgetText(#framerateinfo)+" "
EndIf
If GetGadgetText(#heightresize)<>""
x264.s=x264.s+GetGadgetText(#widthresize)+"x"+GetGadgetText(#heightresize)+" "
EndIf
If passx.s="0" Or passx.s="2"
If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf
If GetGadgetText(#mp4box)="NONE"
x264.s=x264.s+" -o "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.mp4"+Chr(34)
EndIf
If GetGadgetText(#mp4box)<>"NONE"
x264.s=x264.s+" -o "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.h264"+Chr(34)
EndIf
EndIf
If passx.s="1"
x264.s=x264.s+" -o "+Chr(34)+dest.s+"delete.mp4"+Chr(34)
EndIf
EndIf
EndIf
ffmpegbat.s=ReplaceString(ffmpegbat.s," "," ")
ffmpegbat.s=ReplaceString(ffmpegbat.s," "," ")
x264.s=ReplaceString(x264.s," "," ")
x264.s=ReplaceString(x264.s," "," ")
Debug("sono in ffmpegbat.s "+ffmpegbat.s)
Debug("sono in x264.s "+x264.s)
EndProcedure
Procedure mkyuv()
x264.s=""
x264.s=Chr(34)+pffmpeg.s+Chr(34)+" -i "+Chr(34)+inputfile.s+Chr(34)+" -vcodec rawvideo -pix_fmt yuv420p "
If GetGadgetText(#rframe)<>"NONE"
x264.s=x264.s+"-r "+GetGadgetText(#rframe)+" "
EndIf
If GetGadgetText(#rframe)="NONE"
x264.s=x264.s+"-r "+GetGadgetText(#framerateinfo)+" "
EndIf
If GetGadgetText(#cropleft)<>""
x264.s=x264.s+" -cropleft "+Str(acleft.l)+" "
EndIf
If GetGadgetText(#croptop)<>""
x264.s=x264.s+" -croptop "+Str(actop.l)+" "
EndIf
If GetGadgetText(#cropright)<>""
x264.s=x264.s+" -cropright "+Str(acright.l)+" "
EndIf
If GetGadgetText(#cropbottom)<>""
x264.s=x264.s+" -cropbottom "+Str(acbottom.l)+" "
EndIf
If GetGadgetText(#heightresize)<>""
If GetGadgetText(#sws)<>"bicubic" : x264.s=x264.s+" -sws_flags "+Str(GetGadgetState(#sws))+" " : EndIf
x264.s=x264.s+" -s "+GetGadgetText(#widthresize)+"x"+GetGadgetText(#heightresize)+" "
If GetGadgetText(#aspect)<>"" : x264.s=x264.s+"-aspect "+GetGadgetText(#aspect)+" ": EndIf
EndIf
If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf
x264.s=x264.s+"-f rawvideo -y "+Chr(34)+dest.s+"autoff_temp.yuv"+Chr(34)
EndProcedure
Procedure yuv264()
If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf
x264.s=""
x264.s="x264 "+Chr(34)+dest.s+"autoff_temp.yuv"+Chr(34)+" --threads auto "
If passx.s="0" : x264.s=x264.s+" --bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
If passx.s="1" : x264.s=x264.s+" --pass 1 --bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
If passx.s="2" : x264.s=x264.s+" --pass 2 --bitrate "+StrF(Val(GetGadgetText(#b))/1000,0)+" " : EndIf
x264.s=x264.s+"--progress "
x264.s=x264.s+"--ref "+GetGadgetText(#x264refs)+" "
x264.s=x264.s+"--deblock "+GetGadgetText(#x264deblockalpha)+","+GetGadgetText(#x264deblockbeta)+" "
If GetGadgetText(#x264directpred)<>"None" : x264.s=x264.s+"--direct "+LCase(GetGadgetText(#x264directpred))+" " : EndIf
x264.s=x264.s+"--subme "+GetGadgetText(#x264subme)+" "
x264.s=x264.s+"--trellis "+GetGadgetText(#x264trellis)+" "
x264.s=x264.s+"--me "+GetGadgetText(#x264me)+" "
If GetGadgetText(#x264minkeyint)<>"" : x264.s=x264.s+"--min-keyint "+GetGadgetText(#x264minkeyint)+" " : EndIf
If GetGadgetText(#x264keyint)<>"" : x264.s+"--keyint "+GetGadgetText(#x264keyint)+" " : EndIf
x264.s=x264.s+"--merange "+GetGadgetText(#x264merange)+" "
x264.s=x264.s+"--bframes "+Str((GetGadgetState(#x264bframes)))+" "
If GetGadgetText(#x264aqmode)<>"" : x264.s=x264.s+"--aq-mode "+Str(GetGadgetState(#x264aqmode))+" " : EndIf
If GetGadgetText(#x264aqstrenght)<>"" : x264.s=x264.s+"--aq-strength "+Str(GetGadgetState(#x264aqstrenght))+" " : EndIf
If GetGadgetText(#x264qpstep)<>"" : x264.s=x264.s+"--qpstep "+GetGadgetText(#x264qpstep)+" " : EndIf
If GetGadgetText(#x264ratetol)<>"" : x264.s=x264.s+"--ratetol "+GetGadgetText(#x264ratetol)+" " : EndIf
If GetGadgetState(#x264brdo)=1 : x264.s=x264.s+"--b-rdo " : EndIf
If GetGadgetState(#x264mixed_refs)=1 : x264.s=x264.s+"--mixed-refs " : EndIf
If GetGadgetState(#x264fastpskip)=1 : x264.s=x264.s+"--no-fast-pskip " : EndIf
If GetGadgetState(#x264bime)=1 : x264.s=x264.s+"--bime " : EndIf
If GetGadgetState(#x264weightb)=1 : x264.s=x264.s+"--weightb " : EndIf
If GetGadgetState(#x264bpyramid)=1 : x264.s=x264.s+"--b-pyramid " : EndIf
If GetGadgetState(#x264wpred)=1 : x264.s=x264.s+"--wpred " : EndIf
If GetGadgetState(#x264parti4x4)=1 Or GetGadgetState(#x264parti8x8)=1 Or GetGadgetState(#x264partp4x4)=1 Or GetGadgetState(#x264partp8x8)=1 Or GetGadgetState(#x264partb8x8)=1
If Or GetGadgetState(#x264allpartition)=0
x264.s=x264.s+"--partitions "
If GetGadgetState(#parti4x4)=1 : x264.s=x264.s+"i4x4," : EndIf
If GetGadgetState(#parti8x8)=1 : x264.s=x264.s+"i8x8," : EndIf
If GetGadgetState(#partp8x8)=1 : x264.s=x264.s+"p8x8," : EndIf
If GetGadgetState(#partp4x4)=1 : x264.s=x264.s+"p4x4," : EndIf
If GetGadgetState(#partb8x8)=1 : x264.s=x264.s+"b8x8," : EndIf
If Right(x264.s,1)="," : x264.s=RSet(x264.s,Len(x264.s)-1)+" " : EndIf
x264.s=x264.s+" "
EndIf
EndIf
If GetGadgetState(#x264allpartition)=1
x264.s=x264.s+"--partitions all --8x8dct "
EndIf
If GetGadgetState(#x264dct8x8)=1
If GetGadgetState(#x264allpartition)=0
x264.s=x264.s+"--8x8dct "
EndIf
EndIf
If GetGadgetText(#x264level)<>"" : x264.s+"--level "+GetGadgetText(#x264level)+" " : EndIf
If GetGadgetText(#x264vbvinit)<>"" : x264.s+"--vbv-init "+GetGadgetText(#x264vbvinit)+" " : EndIf
If GetGadgetText(#x264vbvmaxrate)<>"" : x264.s+"--vbv-maxrate "+GetGadgetText(#x264vbvmaxrate)+" " : EndIf
If GetGadgetText(#x264vbvbufsize)<>"" : x264.s+"--vbv-bufsize "+GetGadgetText(#x264vbvbufsize)+" " : EndIf
If GetGadgetText(#rframe)<>"NONE"
x264.s=x264.s+"--fps "+GetGadgetText(#rframe)+" "
EndIf
If GetGadgetText(#rframe)="NONE"
x264.s=x264.s+"--fps "+GetGadgetText(#framerateinfo)+" "
EndIf
If GetGadgetText(#heightresize)<>""
x264.s=x264.s+GetGadgetText(#widthresize)+"x"+GetGadgetText(#heightresize)+" "
EndIf
If passx.s="0" Or passx.s="2"
If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf
If GetGadgetText(#mp4box)="NONE"
x264.s=x264.s+" -o "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.mp4"+Chr(34)
EndIf
If GetGadgetText(#mp4box)<>"NONE"
x264.s=x264.s+" -o "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.h264"+Chr(34)
EndIf
EndIf
If passx.s="1"
x264.s=x264.s+" -o "+Chr(34)+dest.s+"delete.mp4"+Chr(34)
EndIf
EndProcedure
Procedure.f RoundByClosest(base.f, factor.l)
round = Int((base / factor)+0.5) * factor
ProcedureReturn round
EndProcedure
Procedure.f RoundUpBy(base.f, factor.l)
round = Int((base / factor)+1) * factor
ProcedureReturn round
EndProcedure
Procedure.f RoundDownBy(base.f, factor.l)
round = Int(base / factor) * factor
ProcedureReturn round
EndProcedure
Procedure.l RoundByX(base.f, factor.l, bool_roundup.l)
If bool_roundup = #True : ProcedureReturn Round((base / factor),1) * factor
ElseIf bool_roundup = #False : ProcedureReturn Round((base / factor),0) * factor
EndIf
EndProcedure
Procedure populatecodec()
ClearGadgetItemList(#acodec): ClearGadgetItemList(#vcodec): ClearGadgetItemList(#container)
wait=RunProgram(pffmpeg.s," -formats",pexe.s,#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide)
While ProgramRunning(wait)
line.s=ReadProgramString(wait)
If FindString(line.s,"EA",0) : AddGadgetItem(#acodec,-1,Trim(Mid(line.s,9,15))) : EndIf
If FindString(line.s,"EV",0) : AddGadgetItem(#vcodec,-1,Trim(Mid(line.s,9,15))) : EndIf
; If FindString(line.s," DE ",0) : AddGadgetItem(#container,-1,Mid(line.s,5,15)) : EndIf
Wend
WaitProgram(wait)
wait=RunProgram(pffmpeg.s," -version ",pexe.s,#PB_Program_Open|#PB_Program_Error|#PB_Program_Hide)
While ProgramRunning(wait)
line.s=ReadProgramError(wait)
If FindString(line.s,"FFmpeg version",0)
SetWindowTitle(#window0,"AutoFF r"+ver.s+" using "+StringField(line.s,1,","))
EndIf
Wend
WaitProgram(wait)
SetGadgetState(#acodec,25)
SetGadgetState(#vcodec,23)
AddGadgetItem(#container,-1,"avi")
AddGadgetItem(#container,-1,"dv")
AddGadgetItem(#container,-1,"flv")
AddGadgetItem(#container,-1,"mp4")
AddGadgetItem(#container,-1,"mpeg")
AddGadgetItem(#container,-1,"mov")
AddGadgetItem(#container,-1,"m4v")
;AddGadgetItem(#container,-1,"ts")
AddGadgetItem(#container,-1,"wmv")
AddGadgetItem(#container,-1,"vob")
SetGadgetText(#container,"avi")
EndProcedure
Procedure setprofilevalues(parse.s)
profilefile.s=""
profilefile.s=here.s+"profile/"+GetGadgetText(#profile)
Value.s=""
If ReadFile(888,profilefile.s)
While Eof(888) = #False
line.s = ReadString(888)
If FindString(line.s,"<"+parse.s+">",1)
Value.s=StringField(line.s,2,">")
Value.s=StringField(Value.s,1,"<")
; Debug("value.s="+value.s)
Break
EndIf
Wend
CloseFile(888)
EndIf
EndProcedure
Procedure populatevalue()
setprofilevalues("vcodec") : If Value.s<>"false" : SetGadgetText(#vcodec,Value.s) : EndIf
setprofilevalues("container") : If Value.s<>"false" : SetGadgetText(#container,Value.s) : EndIf
setprofilevalues("pass") : If Value.s<>"false" :SetGadgetState(#pass,Val(Value.s)-1) : EndIf
setprofilevalues("dct8x8")
If Value.s="true" : SetGadgetState(#dct8x8,1) : EndIf
If Value.s="false" : SetGadgetState(#dct8x8,0) : EndIf
setprofilevalues("ab") : If Value.s<>"false" : SetGadgetText(#ab,Value.s) : EndIf
setprofilevalues("acodec") : If Value.s<>"false" : SetGadgetText(#acodec,Value.s) : EndIf
setprofilevalues("aic")
If Value.s="true" : SetGadgetState(#aic,1) : EndIf
If Value.s="false" : SetGadgetState(#aic,0) : EndIf
setprofilevalues("aiv")
If Value.s="true" : SetGadgetState(#aiv,1) : EndIf
If Value.s="false" : SetGadgetState(#aiv,0) : EndIf
setprofilevalues("ar") : If Value.s<>"false" : SetGadgetText(#AR,Value.s) : EndIf
setprofilevalues("aiv")
If Value.s="true" : SetGadgetState(#aiv,1) : EndIf
If Value.s="false" : SetGadgetState(#aiv,0) : EndIf
setprofilevalues("async")
If Value.s="true" : SetGadgetState(#async,1) : EndIf
If Value.s="false" : SetGadgetState(#async,0) : EndIf
setprofilevalues("aud")
If Value.s="true" : SetGadgetState(#aud,1) : EndIf
If Value.s="false" : SetGadgetState(#aud,0) : EndIf
setprofilevalues("author") : If Value.s<>"false" : SetGadgetText(#author,Value.s) : EndIf
setprofilevalues("b8x8")
If Value.s="true" : SetGadgetState(#partb8x8,1) : EndIf
If Value.s="false" : SetGadgetState(#partb8x8,0) : EndIf
setprofilevalues("b_qfactor") : If Value.s<>"false" : SetGadgetText(#b_qfactor,Value.s) : EndIf
setprofilevalues("b_qoffset") : If Value.s<>"false" : SetGadgetText(#b_qoffset,Value.s) : EndIf
setprofilevalues("b_sensitivity") : If Value.s<>"false" : SetGadgetText(#b_sensitivity,Value.s) : EndIf
setprofilevalues("b_strategy") : If Value.s<>"false" : SetGadgetText(#b_strategy,Value.s) : EndIf
setprofilevalues("bf") : If Value.s<>"false" : SetGadgetState(#bf,Val(Value.s)) : EndIf
setprofilevalues("bframebias") : If Value.s<>"false" : SetGadgetText(#bframebias,Value.s) : EndIf
setprofilevalues("bidir_refine") : If Value.s<>"false" : SetGadgetText(#bidir_refine,Value.s) : EndIf
setprofilevalues("bitexact")
If Value.s="true" : SetGadgetState(#bitexact,1) : EndIf
If Value.s="false" : SetGadgetState(#bitexact,0) : EndIf
setprofilevalues("border_mask") : If Value.s<>"false" : SetGadgetText(#border_mask,Value.s) : EndIf
setprofilevalues("bpyramid")
If Value.s="true" : SetGadgetState(#bpyramid,1) : EndIf
If Value.s="false" : SetGadgetState(#bpyramid,0) : EndIf
setprofilevalues("brd_scale"): If Value.s<>"false" : SetGadgetState(#brd_scale,Val(Value.s)) : EndIf
setprofilevalues("brd_scale"): If Value.s="false" : SetGadgetState(#brd_scale,-1) : EndIf
setprofilevalues("brdo")
If Value.s="true" : SetGadgetState(#brdo,1) : EndIf
If Value.s="false" : SetGadgetState(#brdo,0) : EndIf
setprofilevalues("bufsize") : If Value.s<>"false" : SetGadgetText(#bufsize,Value.s) : EndIf
setprofilevalues("cbp")
If Value.s="true" : SetGadgetState(#cbp,1) : EndIf
If Value.s="false" : SetGadgetState(#cbp,0) : EndIf
setprofilevalues("cgop")
If Value.s="true" : SetGadgetState(#cgop,1) : EndIf
If Value.s="true" : SetGadgetState(#cgop,1) : EndIf
setprofilevalues("chromaoffset") : If Value.s<>"false" : SetGadgetText(#chromaoffset,Value.s) : EndIf
setprofilevalues("cmp") : If Value.s<>"false" : SetGadgetState(#cmp,Val(Value.s)) : EndIf
setprofilevalues("comment") : If Value.s<>"false" : SetGadgetText(#comment,Value.s) : EndIf
setprofilevalues("complexityblur") : If Value.s<>"false" : SetGadgetText(#complexityblur,Value.s) : EndIf
setprofilevalues("copyright")
If Value.s<>"false" : SetGadgetText(#copyright,Value.s) : EndIf
If Value.s="false" : SetGadgetText(#copyright,"Done with AutoFF") : EndIf
setprofilevalues("dark_mask") : If Value.s<>"false" : SetGadgetText(#dark_mask,Value.s) : EndIf
setprofilevalues("deblockalpha") : If Value.s<>"false" : SetGadgetState(#deblockalpha,Val(Value.s)) : EndIf
setprofilevalues("deblockbeta") : If Value.s<>"false" : SetGadgetState(#deblockbeta,Val(Value.s)) : EndIf
setprofilevalues("dia_size") : If Value.s<>"false" : SetGadgetState(#dia_size,Val(Value.s)) : EndIf
setprofilevalues("directpred") : If Value.s<>"false" : SetGadgetText(#directpred,Value.s) : EndIf
setprofilevalues("drop_frame_timecode") : If Value.s<>"false" : SetGadgetState(#drop_frame_timecode,1) : EndIf
setprofilevalues("fastx264")
If Value.s="true" : SetGadgetState(#fastx264,1) : EndIf
If Value.s="false" : SetGadgetState(#fastx264,0) : EndIf
setprofilevalues("fastpskip")
If Value.s="true" : SetGadgetState(#fastpskip,1) : EndIf
If Value.s="false" : SetGadgetState(#fastpskip,0) : EndIf
setprofilevalues("gmc")
If Value.s="true" : SetGadgetState(#gmc,1) : EndIf
If Value.s="false" : SetGadgetState(#gmc,0) : EndIf
setprofilevalues("lavcgop") : If Value.s<>"false" : SetGadgetText(#lavcgop,Value.s) : EndIf
setprofilevalues("grayscale")
If Value.s="true" : SetGadgetState(#grayscale,1) : EndIf
If Value.s="false" : SetGadgetState(#grayscale,0) : EndIf
setprofilevalues("i4x4")
If Value.s="true" : SetGadgetState(#parti4x4,1) : EndIf
If Value.s="false" : SetGadgetState(#parti4x4,0) : EndIf
setprofilevalues("i8x8")
If Value.s="true" : SetGadgetState(#parti8x8,1) : EndIf
If Value.s="false" : SetGadgetState(#parti8x8,0) : EndIf
setprofilevalues("i_qfactor") : If Value.s<>"false" : SetGadgetText(#i_qfactor,Value.s) : EndIf
setprofilevalues("i_qoffset") : If Value.s<>"false" : SetGadgetText(#i_qoffset,Value.s) : EndIf
setprofilevalues("ic")
If Value.s="true" : SetGadgetState(#ic,1) : EndIf
If Value.s="false" : SetGadgetState(#ic,0) : EndIf
setprofilevalues("ildct")
If Value.s="true" : SetGadgetState(#ildct,1) : EndIf
If Value.s="false" : SetGadgetState(#ildct,0) : EndIf
setprofilevalues("ilme")
If Value.s="true" : SetGadgetState(#ilme,1) : EndIf
If Value.s="false" : SetGadgetState(#ilme,0) : EndIf
setprofilevalues("ivlc")
If Value.s="true" : SetGadgetState(#ivlc,1) : EndIf
If Value.s="false" : SetGadgetState(#ivlc,0) : EndIf
setprofilevalues("keyint_min") : If Value.s<>"false" : SetGadgetText(#keyint_min,Value.s) : EndIf
setprofilevalues("last_pred") : If Value.s<>"false" : SetGadgetText(#last_pred,Value.s) : EndIf
setprofilevalues("level") : If Value.s<>"false" : SetGadgetText(#level,Value.s) : EndIf
setprofilevalues("local_header")
If Value.s="true" : SetGadgetState(#local_header,1) : EndIf
If Value.s="false" : SetGadgetState(#local_header,0) : EndIf
setprofilevalues("loop")
If Value.s="true" : SetGadgetState(#loop,1) : EndIf
If Value.s="false" : SetGadgetState(#loop,0) : EndIf
setprofilevalues("low_delay")
If Value.s="true" : SetGadgetState(#low_delay,1) : EndIf
If Value.s="false" : SetGadgetState(#low_delay,0) : EndIf
setprofilevalues("lumi_mask") : If Value.s<>"false" : SetGadgetText(#lavclumi_mask,Value.s) : EndIf
setprofilevalues("maxrate") : If Value.s<>"false" : SetGadgetText(#maxrate,Value.s) : EndIf
setprofilevalues("mb_threshold") : If Value.s<>"false" : SetGadgetText(#mb_threshold,Value.s) : EndIf
setprofilevalues("mbcmp") : If Value.s<>"false" : SetGadgetText(#mbcmp,Value.s) : EndIf
setprofilevalues("mbd") : If Value.s<>"false" : SetGadgetState(#mbd,Val(Value.s)) : EndIf
setprofilevalues("me_method") : If Value.s<>"false" : SetGadgetText(#me_method,Value.s) : EndIf
setprofilevalues("me_range") : If Value.s<>"false" : SetGadgetText(#me_range,Value.s) : EndIf
setprofilevalues("me_threshold") : If Value.s<>"false" : SetGadgetText(#me_threshold,Value.s) : EndIf
setprofilevalues("mepc") : If Value.s<>"false" : SetGadgetText(#mepc,Value.s) : EndIf
setprofilevalues("minrate") : If Value.s<>"false" : SetGadgetText(#minrate,Value.s) : EndIf
setprofilevalues("mixed_refs") : If Value.s="true" : SetGadgetState(#mixed_refs,1) : EndIf
setprofilevalues("mv0flags")
If Value.s="true" : SetGadgetState(#mv0flags,1) : EndIf
If Value.s="false" : SetGadgetState(#mv0flags,0) : EndIf
setprofilevalues("mv0_threshold") : If Value.s<>"false" : SetGadgetText(#mv0_threshold,Value.s) : EndIf
setprofilevalues("mv4")
If Value.s="true" : SetGadgetState(#mv4,1) : EndIf
If Value.s="false" : SetGadgetState(#mv4,0) : EndIf
setprofilevalues("naq")
If Value.s="true" : SetGadgetState(#naq,1) : EndIf
If Value.s="false" : SetGadgetState(#naq,0) : EndIf
setprofilevalues("non_linear_q")
If Value.s="true" : SetGadgetState(#non_linear_q,1) : EndIf
If Value.s="false" : SetGadgetState(#non_linear_q,0) : EndIf
setprofilevalues("noout")
If Value.s="true" : SetGadgetState(#noout,1) : EndIf
If Value.s="false" : SetGadgetState(#noout,0) : EndIf
setprofilevalues("obmc")
If Value.s="true" : SetGadgetState(#obmc,1) : EndIf
If Value.s="false" : SetGadgetState(#obmc,0) : EndIf
setprofilevalues("p8x8")
If Value.s="true" : SetGadgetState(#partp8x8,1) : EndIf
If Value.s="false" : SetGadgetState(#partp8x8,0) : EndIf
setprofilevalues("p4x4")
If Value.s="true" : SetGadgetState(#partp4x4,1) : EndIf
If Value.s="false" : SetGadgetState(#partp4x4,0) : EndIf
setprofilevalues("p_mask") : If Value.s<>"false" : SetGadgetText(#p_mask,Value.s) : EndIf
setprofilevalues("part")
If Value.s="true" : SetGadgetState(#part,1) : EndIf
If Value.s="false" : SetGadgetState(#part,0) : EndIf
setprofilevalues("pre_dia_size") : If Value.s<>"false" : SetGadgetText(#pre_dia_size,Value.s) : EndIf
setprofilevalues("precmp") : If Value.s<>"false" : SetGadgetText(#precmp,Value.s) : EndIf
setprofilevalues("preme") : If Value.s<>"false" : SetGadgetState(#preme,Val(Value.s)) : EndIf
setprofilevalues("qmax") : If Value.s<>"false" : SetGadgetText(#qmax,Value.s) : EndIf
setprofilevalues("qmin") : If Value.s<>"false" : SetGadgetText(#qmin,Value.s) : EndIf
setprofilevalues("qns") : If Value.s<>"false" : SetGadgetState(#qns,Val(Value.s)) : EndIf
setprofilevalues("qns") : If Value.s="-1" : SetGadgetState(#qns,-1) : EndIf
setprofilevalues("qpel")
If Value.s="true" : SetGadgetState(#lavcqpel,1) : EndIf
If Value.s="false" : SetGadgetState(#lavcqpel,0) : EndIf
setprofilevalues("qprd")
If Value.s="true" : SetGadgetState(#qprd,1) : EndIf
If Value.s="false" : SetGadgetState(#qprd,0) : EndIf
setprofilevalues("rc_strategy") : If Value.s<>"false" : SetGadgetText(#rc_strategy,Value.s) : EndIf
setprofilevalues("relavc")
If Value.s="true" : SetGadgetState(#relavc,1) : EndIf
If Value.s="false" : SetGadgetState(#relavc,0) : EndIf
setprofilevalues("refs") : If Value.s<>"false" : SetGadgetState(#refs,Val(Value.s)) : EndIf
setprofilevalues("sameq")
If Value.s="true" : SetGadgetState(#sameq,1) : EndIf
If Value.s="false" : SetGadgetState(#sameq,0) : EndIf
setprofilevalues("sc_factor") : If Value.s<>"false" : SetGadgetText(#sc_factor,Value.s) : EndIf
setprofilevalues("sc_threshold") : If Value.s<>"false" : SetGadgetText(#sc_threshold,Value.s) : EndIf
setprofilevalues("scplx_mask") : If Value.s<>"false" : SetGadgetText(#scplx_mask,Value.s) : EndIf
setprofilevalues("sgop")
If Value.s="true" : SetGadgetState(#sgop,1) : EndIf
If Value.s="false" : SetGadgetState(#sgop,0) : EndIf
setprofilevalues("skiprd")
If Value.s="true" : SetGadgetState(#skiprd,1) : EndIf
If Value.s="false" : SetGadgetState(#skiprd,0) : EndIf
setprofilevalues("subcmp") : If Value.s<>"false" : SetGadgetText(#subcmp,Value.s) : EndIf
setprofilevalues("subq") : If Value.s<>"false" : SetGadgetText(#subq,Value.s) : EndIf
setprofilevalues("tcplx_mask") : If Value.s<>"false" : SetGadgetText(#tcplx_mask,Value.s) : EndIf
setprofilevalues("timestamp") : If Value.s<>"false" : SetGadgetText(#timestamp,Value.s) : EndIf
setprofilevalues("title") : If Value.s<>"false" : SetGadgetText(#title,Value.s) : EndIf
setprofilevalues("trell")
If Value.s="true" : SetGadgetState(#trell,1) : EndIf
If Value.s="false" : SetGadgetState(#trell,0) : EndIf
setprofilevalues("x264trellis") : If Value.s<>"false" : SetGadgetState(#x264trellis,Val(Value.s)) : EndIf
setprofilevalues("umv")
If Value.s="true" : SetGadgetState(#umv,1) : EndIf
If Value.s="false" : SetGadgetState(#umv,0) : EndIf
setprofilevalues("verbose")
If Value.s="true" : SetGadgetState(#verbose,1) : EndIf
If Value.s="false" : SetGadgetState(#verbose,0) : EndIf
setprofilevalues("vol") : If Value.s<>"false" : SetGadgetText(#volume,Value.s) : EndIf
setprofilevalues("vsync")
If Value.s="true" : SetGadgetState(#vsync,1) : EndIf
If Value.s="false" : SetGadgetState(#vsync,0) : EndIf
;setprofilevalues("wpred")
;If Value.s="true" : SetGadgetState(#wpred,1) : EndIf
;If Value.s="false" : SetGadgetState(#wpred,0) : EndIf
setprofilevalues("year") : If Value.s<>"false" : SetGadgetText(#year,Value.s) : EndIf
EndProcedure
Procedure buildxml()
newxml.s=SaveFileRequester("Save new XML profile",".xml","*.xml",0)
If newxml.s<>""
CreateFile(888,newxml.s)
WriteStringN(888, "")
WriteStringN(888, "