; 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, ""+GetGadgetText(#vcodec)+"") WriteStringN(888, ""+GetGadgetText(#container)+"") WriteStringN(888, ""+GetGadgetText(#pass)+"") If GetGadgetState(#dct8x8)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#ab)+"") WriteStringN(888, ""+GetGadgetText(#acodec)+"") If GetGadgetState(#aic)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#aiv)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#AR)+"") If GetGadgetState(#async)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#aud)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#author)+"") If GetGadgetState(#partb8x8)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#b_qfactor)+"") WriteStringN(888, ""+GetGadgetText(#b_qoffset)+"") WriteStringN(888, ""+GetGadgetText(#b_sensitivity)+"") WriteStringN(888, ""+GetGadgetText(#b_strategy)+"") WriteStringN(888, ""+GetGadgetText(#bf)+"") WriteStringN(888, ""+GetGadgetText(#bframebias)+"") WriteStringN(888, ""+GetGadgetText(#bidir_refine)+"") If GetGadgetState(#bitexact)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#border_mask)+"") If GetGadgetState(#bpyramid)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+Str(GetGadgetState(#brd_scale))+"") WriteStringN(888, ""+GetGadgetText(#bufsize)+"") If GetGadgetState(#cbp)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#cgop)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#chromaoffset)+"") If GetGadgetState(#cgop)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#comment)+"") WriteStringN(888, ""+GetGadgetText(#complexityblur)+"") WriteStringN(888, ""+GetGadgetText(#copyright)+"") WriteStringN(888, ""+GetGadgetText(#dark_mask)+"") WriteStringN(888, ""+GetGadgetText(#deblockalpha)+"") WriteStringN(888, ""+GetGadgetText(#deblockbeta)+"") WriteStringN(888, ""+GetGadgetText(#dia_size)+"") WriteStringN(888, ""+GetGadgetText(#directpred)+"") If GetGadgetState(#drop_frame_timecode)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#fastx264)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#fastpskip)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#gmc)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#lavcgop)+"") If GetGadgetState(#grayscale)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#parti4x4)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#parti8x8)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#i_qfactor)+"") WriteStringN(888, ""+GetGadgetText(#i_qoffset)+"") If GetGadgetState(#ic)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#ildct)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#ilme)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#ivlc)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#keyint_min)+"") WriteStringN(888, ""+GetGadgetText(#last_pred)+"") WriteStringN(888, ""+GetGadgetText(#level)+"") If GetGadgetState(#local_header)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#loop)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#low_delay)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#lavclumi_mask)+"") WriteStringN(888, ""+GetGadgetText(#maxrate)+"") WriteStringN(888, ""+GetGadgetText(#mb_threshold)+"") WriteStringN(888, ""+GetGadgetText(#mbcmp)+"") WriteStringN(888, ""+GetGadgetText(#mbd)+"") WriteStringN(888, ""+GetGadgetText(#me_method)+"") WriteStringN(888, ""+GetGadgetText(#me_range)+"") WriteStringN(888, ""+GetGadgetText(#me_threshold)+"") WriteStringN(888, ""+GetGadgetText(#mepc)+"") WriteStringN(888, ""+GetGadgetText(#minrate)+"") If GetGadgetState(#mixed_refs)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#mv0flags)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#mv0_threshold)+"") If GetGadgetState(#mv4)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#naq)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#non_linear_q)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#noout)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#obmc)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#partp8x8)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#partp4x4)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#p_mask)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#part)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#pre_dia_size)+"") WriteStringN(888, ""+GetGadgetText(#precmp)+"") If GetGadgetState(#preme)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#qmax)+"") WriteStringN(888, ""+GetGadgetText(#qmin)+"") If GetGadgetText(#qns)="-1" : WriteStringN(888, "false") : EndIf If GetGadgetText(#qns)<>"-1" : WriteStringN(888,""+GetGadgetText(#qns)+"") : EndIf If GetGadgetState(#lavcqpel)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#qprd)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#rc_strategy)+"") If GetGadgetState(#relavc)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#refs)+"") If GetGadgetState(#sameq)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#sc_factor)+"") WriteStringN(888, ""+GetGadgetText(#sc_threshold)+"") WriteStringN(888, ""+GetGadgetText(#scplx_mask)+"") If GetGadgetState(#sgop)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#skiprd)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#subcmp)+"") WriteStringN(888, ""+GetGadgetText(#subq)+"") WriteStringN(888, ""+GetGadgetText(#tcplx_mask)+"") WriteStringN(888, ""+GetGadgetText(#timestamp)+"") WriteStringN(888, ""+GetGadgetText(#title)+"") If GetGadgetState(#trell)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#x264trellis)+"") If GetGadgetState(#umv)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#verbose)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#volume)+"") If GetGadgetState(#vsync)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf If GetGadgetState(#wpred)=1 WriteStringN(888, "true") Else WriteStringN(888, "false") EndIf WriteStringN(888, ""+GetGadgetText(#year)+"") CloseFile(888) loadcodec() EndIf EndProcedure Procedure loadcodec() ClearGadgetItemList(#profile) If ExamineDirectory(6,here.s+"profile/","*.xml")<>0 Repeat type=NextDirectoryEntry(6) If type=1 ; File. file.s=DirectoryEntryName(6) AddGadgetItem(#profile,-1,file.s) EndIf Until type=0 FinishDirectory(6) SetGadgetState(#profile,0) populatevalue() EndIf EndProcedure Procedure silentscale() acbottom.l=Val(GetGadgetText(#cropbottom)) acleft.l=Val(GetGadgetText(#cropleft)) acright.l=Val(GetGadgetText(#cropright)) actop.l=Val(GetGadgetText(#croptop)) If height.f=ValF(GetGadgetText(#heightresize)) And width.f=ValF(GetGadgetText(#widthresize)) ProcedureReturn EndIf Debug(twidth.f) Debug(theight.f) Debug(framerate.f) Debug(tsec.f) Debug(ar.s) Debug(acleft.l) Debug(acright.l) Debug(actop.l) Debug(acbottom.l) aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) dar.f = ((twidth.f-acleft.l-acright.l)/twidth.f)/((theight.f-actop.l-acbottom.l)/theight.f)*aspectinfo.f*1.02564 SetGadgetText(#aspect,StrF(dar.f,3)) SetGadgetText(#heightresize,StrF(RoundByClosest(ValF(GetGadgetText(#widthresize))/dar.f,8),0)) SetGadgetText(#arerror,StrF((dar.f/(ValF(GetGadgetText(#widthresize))/ValF(GetGadgetText(#heightresize))))*100-100,3)) height.f=ValF(GetGadgetText(#heightresize)) width.f=ValF(GetGadgetText(#widthresize)) ;if GetGadgetState(#trackwidth)<>RoundByX((ValF(GetGadgetText(#widthresize))/twidth.f)*100,16,#True) ; SetGadgetState(#trackwidth,RoundByX((ValF(GetGadgetText(#widthresize))/twidth.f)*100,16,#True)) ;EndIf EndProcedure Procedure silentresize() SetGadgetText(#widthresize,Str(RoundByX(twidth.f/100*GetGadgetState(#trackwidth),16,#True))) silentscale() EndProcedure Procedure preview() 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 ;"mplayer" -vf crop=720:432:0:72,scale=640:-2 -nosound "C:\Programmi\PureBasic402\AutoFM\_aaa.VOB" mess.s="" If demuxer35.s="1" : mess4.s=" -demuxer 35 " : EndIf If GetExtensionPart(inputfile.s)="dvr-ms" : mess4.s=" -demuxer 35 " : EndIf vcrop.s="crop="+Str(twidth.f-Val(GetGadgetText(#cropleft))-Val(GetGadgetText(#cropright)))+":"+Str(theight.f-Val(GetGadgetText(#croptop))-Val(GetGadgetText(#cropbottom)))+":"+GetGadgetText(#cropleft)+":"+GetGadgetText(#croptop) wait=RunProgram(pmplayer.s,mess4.s+" -vf "+vcrop.s+",scale="+GetGadgetText(#widthresize)+":"+GetGadgetText(#heightresize)+" -aspect "+GetGadgetText(#aspectrationinfo)+" -aid "+Str(128+GetGadgetState(#audiotrack))+" "+Chr(34)+inputfile.s+Chr(34),here.s,#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide) While ProgramRunning(wait) mess.s=ReadProgramString(wait) Debug(mess.s) ;If FindString(mess.s,"VO: [directx] "+GetGadgetText(#widthresize),0) ; SetGadgetText(#heightresize,(StringField((StringField(StringField(mess.s,2,GetGadgetText(#widthresize)),2,"x")),1," "))) ;EndIf If FindString(mess.s,"VO: [directx] "+GetGadgetText(#widthresize),0) SetGadgetText(#heightresize,Str(RoundByClosest(ValF(Trim(StringField(StringField(mess.s,0,"="),3,"x"))),16))) EndIf Wend WaitProgram(wait) EndProcedure Procedure autocrop() 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 acbottom.l=0 acleft.l=0 cropright.l=0 actop.l=0 mess.s="" mess1.s="" vcrop.s="" If demuxer35.s="1" : mess4.s=" -demuxer 35 " : EndIf If GetExtensionPart(inputfile.s)="dvr-ms" : mess4.s=" -demuxer 35 " : EndIf wait=RunProgram(pmplayer.s," -demuxer 35 -vf cropdetect -nosound -vo null -frames 8 -sstep "+StrF(tsec.f/15,0)+" "+Chr(34)+inputfile.s+Chr(34),here.s,#PB_Program_Open|#PB_Program_Read|#PB_Program_Hide) While ProgramRunning(wait) mess.s=ReadProgramString(wait) If FindString(mess.s,"-vf crop=",0) mess1.s=StringField(mess.s,1,")") vcrop.s=Mid(StringField(mess1.s,2,"("),10,1000) vcrop1.s=vcrop.s EndIf Wend WaitProgram(wait) Debug(vcrop.s) ;crop=720:432:0:72 ;crop=688:560:4:8 actop.l=theight.f-Val(StringField(vcrop.s,2,":"))-Val(StringField(vcrop.s,4,":")) acleft.l=Val(StringField(vcrop.s,3,":")) acright.l=twidth.f-acleft.l-Val(StringField(vcrop.s,1,":")) acbottom.l=theight.f-(Val(StringField(vcrop.s,2,":"))+actop.l) Debug(" -cropleft "+Str(acleft.l)+" -croptop "+Str(actop.l)+" -cropright "+Str(acright.l)+" -cropbottom "+Str(acbottom.l)+" " ) SetGadgetText(#cropbottom,"") SetGadgetText(#cropleft,"") SetGadgetText(#cropright,"") SetGadgetText(#croptop,"") SetGadgetText(#cropbottom,Str(acbottom.l)) SetGadgetText(#cropleft,Str(acleft.l)) SetGadgetText(#cropright,Str(acright.l)) SetGadgetText(#croptop,Str(actop.l)) If actop.l>100 Or acbottom.l>100 Or acleft.l>100 Or acright.l>100 MessageRequester("AutoCrop", "Please, check autocrop value", #PB_MessageRequester_Ok ) EndIf EndProcedure Procedure mplayerinfo() If OSVersion() <#PB_OS_Windows_NT3_51 If GetGadgetText(#mplayerpath)<>"" : pmplayer.s=GetGadgetText(#mplayerpath) : EndIf EndIf 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" exts.s="avs" demuxer35.s="" EndIf If exts.s="dvr-ms" Or exts.s="ts" demuxer35.s="1" EndIf If demuxer35.s="1" : mess4.s=" -demuxer 35 " : EndIf wait1=RunProgram(pmplayer.s," "+mess4.s+" -vo null -identify -frames 1 "+Chr(34)+inputfile.s+Chr(34),here.s,#PB_Program_Open|#PB_Program_Hide|#PB_Program_Read) While ProgramRunning(wait1) mess.s=ReadProgramString(wait1) If FindString(mess,"ID_VIDEO_WIDTH",0) twidth.f=ValF(StringField(mess.s,2,"=")) EndIf If FindString(mess,"ID_VIDEO_HEIGHT",0) theight.f=ValF(StringField(mess.s,2,"=")) EndIf If FindString(mess,"ID_LENGTH",0) tsec.f=ValF(Trim(StringField(mess.s,2,"="))) EndIf If FindString(mess,"VDec: vo config request",0) ;VDec: vo config request - 720 x 480 twidth.f=ValF(Trim(Mid(mess.s,FindString(mess.s,"-",0)+1,FindString(mess.s,"x",0)-FindString(mess.s,"-",0)-2))) theight.f=ValF(Trim(Mid(mess.s,FindString(mess.s,"x",0)+1,FindString(mess.s,"(",0)-FindString(mess.s,"x",0)-2))) EndIf If FindString(mess," fps ",0) aaa.s=StringField(mess.s,0,"fps") bbb.l=CountString(aaa.s," ") framerate.f=ValF(StringField(aaa.s,bbb," ")) EndIf If FindString(mess,"ID_AUDIO_ID",0) ; audiocount1.f=Val(StringField(mess.s,2,"=")) ; If audiocount1.f>audiocount.f : audiocount.f=audiocount1.f : EndIf audiocount.l=audiocount.l+1 audiotracklist.s(audiocount.l)=mess.s EndIf If FindString(mess.s,"ID_VIDEO_ASPECT",0) ar.s=StringField(mess.s,2,"=") EndIf If FindString(mess.s,"Movie-Aspect is",0) ar.s=Trim(Mid(mess.s,FindString(mess.s," ",16),FindString(mess.s,":",0)-16)) EndIf Wend WaitProgram(wait1) framecount.f=tsec.f*framerate.f Debug("twidth.f="+StrF(twidth.f)) Debug("theight.f="+StrF(theight.f)) Debug("framerate.f="+StrF(framerate.f)) Debug("framecount.f="+StrF(framecount.f)) Debug("tsec.f="+StrF(tsec.f)) Debug("ar.s="+ar.s) If ((framecount.f/framerate.f)<3 And demuxer35.s<>"1") Or ar.s="" If stop.l=1 And demuxer35.s="1" MessageRequester("Parsing Problem","Mplayer is unable to determine movie propierties, please fill the values on File Information") ProcedureReturn EndIf EndIf If ((framecount.f/framerate.f)<3 And demuxer35.s<>"1") Or ar.s="" If exts.s<>"avs" demuxer35.s="1" stop.l=1 mplayerinfo() EndIf EndIf ; If ((framecount.f/framerate.f)<3 And demuxer35.s<>"1") Or ar.s="" ; If exts.s<>"avs" ; demuxer35.s="1" ; mplayerinfo() ; EndIf ; EndIf EndProcedure Procedure infomedia(inputfile.s) stop.l=0 demuxer35.s="" ; -map [0:0] -map [1:0] il prima map e' il flusso nuovo , il secondo dice di tenere la prima traccia audio e la traccia video 0 If previusfile.s=inputfile.s ProcedureReturn Else previusfile.s=inputfile.s EndIf exts.s=LCase(GetExtensionPart(inputfile.s)) If exts.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 If exts.s="d2v" Or exts.s="avs" Select MessageRequester("Audio", "Allow Audio ?", #PB_MessageRequester_YesNo) Case #PB_MessageRequester_Yes audiod2v.s="true" Case #PB_MessageRequester_No audiod2v.s="false" SetGadgetState(#an,1) EndSelect EndIf ReDim audiotracklist.s(1000) audiocount.l=0 twidth.f=0 theight.f=0 framerate.f=0 tsec.f=0 ar.s="" mess.s="" ClearGadgetItemList(#audiotrack) SetGadgetText(#resolution,"") SetGadgetText(#framerateinfo,"") SetGadgetText(#movielenght,"") SetGadgetText(#aspectrationinfo,"") SetGadgetText(#cropbottom,"") SetGadgetText(#cropleft,"") SetGadgetText(#cropright,"") SetGadgetText(#croptop,"") SetGadgetText(#heightresize,"") SetGadgetText(#widthresize,"") SetGadgetText(#framecountshow,"") Debug("inpufile="+inputfile.s) wait2=CreateThread(@mplayerinfo(),0) WaitThread(wait2) Debug("audiocount.f="+Str(audiocount.l)) For a=1 To audiocount.l Debug("audiotracklist(a)="+audiotracklist(a)) AddGadgetItem(#audiotrack,-1,audiotracklist(a)) Next SetGadgetState(#audiotrack,0) If ar.s<>"" : SetGadgetText(#aspectrationinfo,ar.s) : EndIf Debug("tsec1="+StrF(tsec.f)) tsec.f=Int(framecount.f/framerate.f)+1 Debug("tsec2="+StrF(tsec.f)) octa.l=Int((twidth.f)/8) Debug("octa="+Str(octa.l)) Debug(twidth.f) Debug(theight.f) Debug(framerate.f) Debug(tsec.f) Debug(ar.s) SetGadgetText(#resolution,StrF(twidth.f,0)+" / "+StrF(theight.f,0)) SetGadgetText(#framerateinfo,StrF(framerate.f,3)) SetGadgetText(#movielenght,StrF(tsec.f,0)) ;AddGadgetItem(#aspectrationinfo,0,ar.s) SetGadgetState(#aspectrationinfo,0) SetGadgetText(#aspectrationinfo,ar.s) SetGadgetText(#framecountshow,StrF(framecount.f,0)) aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) If framerate.f<20 Or tsec.f<5 Or Val(ar.s)<1.3 MessageRequester("File Check", "Please, check media proprierties", #PB_MessageRequester_Ok) EndIf SetGadgetText(#widthresize,StrF(twidth.f,0)) Debug("wid"=StrF(twidth.f,0)) ;SetGadgetText(#widthresize,Str(RoundByX(twidth.f*87/100,16,#True))) autocrop() silentscale() dimb() EndProcedure Procedure populateinput() aa.l=0 ClearGadgetItemList(#inputlist) ExamineDirectory(0,pathinput.s,"*.*") Repeat type=NextDirectoryEntry(0) If type=1 ; File. Select LCase(GetExtensionPart(DirectoryEntryName(0))) Case "vob","mpeg","mpg","ifo","ts","tp","avi","d2v","avs","m1v","m2v","dvr-ms","mkv","mp4","vro","mov","ogm","evo" aa.l=aa.l+1 inputfileorder.s(aa.l)=DirectoryEntryName(0) EndSelect EndIf Until type=0 FinishDirectory(0) ReDim inputfileorder.s(aa) SortArray(inputfileorder.s(),2) For bb=1 To aa Debug("inputfileorder_"+Str(bb)+" "+inputfileorder.s(bb)) AddGadgetItem(#inputlist,-1,inputfileorder.s(bb)) Next bb Dim inputfileorder.s(0) EndProcedure Procedure inputfolderbutton() pathinput.s=PathRequester("Browse for Input folder",here.s) SetGadgetText(#inputfolder,pathinput.s) populateinput() EndProcedure Procedure domux() If GetGadgetText(#mp4box)="NONE" ffmpegbat.s=Chr(34)+pffmpeg.s+Chr(34)+" " ffmpegbat.s=ffmpegbat.s+" -i "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.mp4"+Chr(34)+" " If GetGadgetState(#audiocopy)=1 ffmpegbat.s=ffmpegbat.s+" -i "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio.ac3" EndIf If GetGadgetState(#audiocopy)=0 ffmpegbat.s=ffmpegbat.s+" -i "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio." If FindString(GetGadgetText(#acodec),"mp3",0) : ffmpegbat.s=ffmpegbat.s+"mp3" : EndIf If FindString(GetGadgetText(#acodec),"pcm",0) : ffmpegbat.s=ffmpegbat.s+"wav" : EndIf If FindString(GetGadgetText(#acodec),"ac3",0) : ffmpegbat.s=ffmpegbat.s+"ac3" : EndIf If FindString(GetGadgetText(#acodec),"vorbis",0) : ffmpegbat.s=ffmpegbat.s+"ogg" : EndIf If FindString(GetGadgetText(#acodec),"faac",0) : ffmpegbat.s=ffmpegbat.s+"aac" : EndIf EndIf ffmpegbat.s=ffmpegbat.s+Chr(34) ffmpegbat.s=ffmpegbat.s+" -acodec copy -vcodec copy " ffmpegbat.s=ffmpegbat.s+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_muxed."+GetGadgetText(#container)+Chr(34)+" " EndIf If GetGadgetText(#mp4box)<>"NONE" ffmpegbat.s=GetGadgetText(#mp4box)+" -fps "+GetGadgetText(#framerateinfo)+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.h264"+Chr(34)+" " If GetGadgetState(#audiocopy)=1 ffmpegbat.s=ffmpegbat.s+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio.ac3" EndIf If GetGadgetState(#audiocopy)=0 ffmpegbat.s=ffmpegbat.s+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio." If FindString(GetGadgetText(#acodec),"mp3",0) : ffmpegbat.s=ffmpegbat.s+"mp3" : EndIf If FindString(GetGadgetText(#acodec),"pcm",0) : ffmpegbat.s=ffmpegbat.s+"wav" : EndIf If FindString(GetGadgetText(#acodec),"ac3",0) : ffmpegbat.s=ffmpegbat.s+"ac3" : EndIf If FindString(GetGadgetText(#acodec),"vorbis",0) : ffmpegbat.s=ffmpegbat.s+"ogg" : EndIf If FindString(GetGadgetText(#acodec),"faac",0) : ffmpegbat.s=ffmpegbat.s+"aac" : EndIf ffmpegbat.s=ffmpegbat.s+Chr(34) ffmpegbat.s=ffmpegbat.s+" "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_muxed.mp4"+Chr(34)+" " EndIf EndIf EndProcedure Procedure doaudio() ffmpegbat.s="" ffmpegbat.s=Chr(34)+pffmpeg.s+Chr(34)+" " ffmpegbat.s=ffmpegbat.s+" -i "+Chr(34)+inputfile.s+Chr(34)+" -vn " If GetGadgetState(#audiocopy)=1 ffmpegbat.s=ffmpegbat.s+"-acodec copy " If GetGadgetState(#audiotrack)>0 ffmpegbat.s=ffmpegbat.s+"-map [0:0] -map ["+Str(GetGadgetState(#audiotrack)+1)+":0] " EndIf ffmpegbat.s=ffmpegbat.s+" "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio.ac3" ProcedureReturn EndIf 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 ffmpegbat.s=ffmpegbat.s+" -y "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio." If FindString(GetGadgetText(#acodec),"mp3",0) : ffmpegbat.s=ffmpegbat.s+"mp3" : EndIf If FindString(GetGadgetText(#acodec),"pcm",0) : ffmpegbat.s=ffmpegbat.s+"wav" : EndIf If FindString(GetGadgetText(#acodec),"ac3",0) : ffmpegbat.s=ffmpegbat.s+"ac3" : EndIf If FindString(GetGadgetText(#acodec),"vorbis",0) : ffmpegbat.s=ffmpegbat.s+"ogg" : EndIf If FindString(GetGadgetText(#acodec),"faac",0) : ffmpegbat.s=ffmpegbat.s+"aac" : EndIf ffmpegbat.s=ffmpegbat.s+Chr(34) EndProcedure Procedure runaudio() If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"doaudio.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram(dest.s+"doaudio.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"doaudio.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"doaudio.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"doaudio.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndProcedure Procedure runmux() If GetGadgetText(#mp4box)<>"NONE" ffmpegbat.s=GetGadgetText(#mp4box)+" -fps "+GetGadgetText(#framerateinfo)+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF.h264"+Chr(34)+" " If GetGadgetState(#audiocopy)=1 ffmpegbat.s=ffmpegbat.s+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio.ac3" EndIf If GetGadgetState(#audiocopy)=0 ffmpegbat.s=ffmpegbat.s+" -add "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_audio." If FindString(GetGadgetText(#acodec),"mp3",0) : ffmpegbat.s=ffmpegbat.s+"mp3" : EndIf If FindString(GetGadgetText(#acodec),"pcm",0) : ffmpegbat.s=ffmpegbat.s+"wav" : EndIf If FindString(GetGadgetText(#acodec),"ac3",0) : ffmpegbat.s=ffmpegbat.s+"ac3" : EndIf If FindString(GetGadgetText(#acodec),"vorbis",0) : ffmpegbat.s=ffmpegbat.s+"ogg" : EndIf If FindString(GetGadgetText(#acodec),"faac",0) : ffmpegbat.s=ffmpegbat.s+"aac" : EndIf ffmpegbat.s=ffmpegbat.s+Chr(34) ffmpegbat.s=ffmpegbat.s+" "+Chr(34)+dest.s+Mid(GetFilePart(inputfile.s),0,Len(GetFilePart(inputfile.s))-1-Len(GetExtensionPart(inputfile.s)))+"_AutoFF_muxed.mp4"+Chr(34)+" " EndIf EndIf AddGadgetItem(#Editor_1,-1,ffmpegbat.s) If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"runmux.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram(dest.s+"runmux.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"runmux.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"runmux.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"runmux.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndProcedure Procedure start() If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf Select GetGadgetText(#pass) Case "1 Pass" passx.s="0" buildbat() If GetGadgetState(#pipetox264)=1 If OSVersion() >=#PB_OS_Windows_NT3_51 AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram(dest.s+"1pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"1pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 If OSVersion() >=#PB_OS_Windows_NT3_51 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram(dest.s+"1pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1pass.bat","",#PB_Program_Wait) RunProgram("xterm"," -e "+Chr(34)+dest.s+"1pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=1 If OSVersion() >=#PB_OS_Windows_NT3_51 mkyuv() CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,x264.s) CloseFile(888) AddGadgetItem(#Editor_1,-1,x264.s) RunProgram(dest.s+"1pass.bat","",dest.s, #PB_Program_Wait) yuv264() CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,x264.s) CloseFile(888) AddGadgetItem(#Editor_1,-1,x264.s) RunProgram(dest.s+"1pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 mkyuv() AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"1pass.bat") WriteStringN(888,x264.s) yuv264() WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"1pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf Case "2 Passes" passx.s="1" mess.s="" x264.s="" ffmpegbat.s="" buildbat() DeleteFile(here.s+"ffmpeg2pass-0.log") DeleteFile(here.s+"ffmpeg2pass-2.log") If GetGadgetState(#pipetox264)=1 AddGadgetItem(#Editor_1,-1,x264.s) If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram(dest.s+"1of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1of2pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"1of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram(dest.s+"1of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1of2pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"1of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=1 If OSVersion() >=#PB_OS_Windows_NT3_51 mkyuv() CreateFile(888,dest.s+"makeyuv.bat") WriteStringN(888,x264.s) CloseFile(888) AddGadgetItem(#Editor_1,-1,x264.s) RunProgram(dest.s+"makeyuv.bat","",dest.s, #PB_Program_Wait) yuv264() CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) AddGadgetItem(#Editor_1,-1,x264.s) RunProgram(dest.s+"1of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 mkyuv() AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"makeyuv.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"makeyuv.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"makeyuv.bat"+Chr(34),"",#PB_Program_Wait) yuv264() AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"1of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"1of2pass.bat","") RunProgram("xterm","-e "+Chr(34)+dest.s+"1of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf passx.s="2" buildbat() If GetGadgetState(#pipetox264)=1 AddGadgetItem(#Editor_1,-1,x264.s) If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram(dest.s+"2of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"2of2pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"2of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) If OSVersion() >=#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram(dest.s+"2of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,ffmpegbat.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"2of2pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"2of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=1 If OSVersion() >=#PB_OS_Windows_NT3_51 yuv264() CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) AddGadgetItem(#Editor_1,-1,x264.s) RunProgram(dest.s+"2of2pass.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 yuv264() AddGadgetItem(#Editor_1,-1,x264.s) CreateFile(888,dest.s+"2of2pass.bat") WriteStringN(888,x264.s) CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"2of2pass.bat","",#PB_Program_Wait) RunProgram("xterm","-e "+Chr(34)+dest.s+"2of2pass.bat"+Chr(34),"",#PB_Program_Wait) EndIf EndIf EndSelect If GetGadgetState(#pipetox264)=1 Or GetGadgetState(#yuvtox264)=1 If GetGadgetState(#an)=0 doaudio() runaudio() domux() runmux() EndIf EndIf If GetGadgetState(#shutdown)=1 If OSVersion() <=#PB_OS_Windows_NT3_51 : RunProgram("shutdown"," -h now","") : EndIf If OSVersion() >=#PB_OS_Windows_NT3_51 : RunProgram("shutdown"," /s /f","") : EndIf EndIf If GetGadgetState(#playsound)=1 : EndIf EndProcedure Procedure startqueue() DeleteFile(dest.s+"queue.bat") mess.s="" For aa=0 To CountGadgetItems(#Editor_1) Debug("riga="+Str(aa)+" = "+GetGadgetItemText(#Editor_1,aa,0)) If OSVersion() >=#PB_OS_Windows_NT3_51 OpenFile(888,dest.s+"queue.bat") FileSeek(888, Lof(888) ) WriteStringN(888,GetGadgetItemText(#Editor_1,aa,0)) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 OpenFile(888,dest.s+"queue.bat") FileSeek(888, Lof(888) ) WriteStringN(888,GetGadgetItemText(#Editor_1,aa,0)) EndIf Next If OSVersion() >=#PB_OS_Windows_NT3_51 CloseFile(888) RunProgram(dest.s+"queue.bat","",dest.s, #PB_Program_Wait) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 CloseFile(888) RunProgram("chmod"," 755 "+dest.s+"queue.bat","",#PB_Program_Wait) RunProgram("xterm"," -e "+Chr(34)+dest.s+"queue.bat"+Chr(34),"",#PB_Program_Wait) EndIf ClearGadgetItemList(#Editor_1) EndProcedure Procedure addtoqueue() If GetGadgetText(#pass)="1 Pass" passx.s="0" buildbat() If GetGadgetState(#pipetox264)=1 AddGadgetItem(#Editor_1,-1,x264.s) EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) EndIf If GetGadgetState(#yuvtox264)=1 mkyuv() AddGadgetItem(#Editor_1,-1,x264.s) yuv264() AddGadgetItem(#Editor_1,-1,x264.s) EndIf If GetGadgetState(#pipetox264)=1 Or GetGadgetState(#yuvtox264)=1 If GetGadgetState(#an)=0 doaudio() AddGadgetItem(#Editor_1,-1,ffmpegbat.s) domux() AddGadgetItem(#Editor_1,-1,ffmpegbat.s) EndIf EndIf EndIf If GetGadgetText(#pass)="2 Passes" passx.s="1" buildbat() If GetGadgetState(#pipetox264)=1 AddGadgetItem(#Editor_1,-1,x264.s) EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) EndIf If GetGadgetState(#yuvtox264)=1 mkyuv() AddGadgetItem(#Editor_1,-1,x264.s) yuv264() AddGadgetItem(#Editor_1,-1,x264.s) EndIf passx.s="2" buildbat() If GetGadgetState(#pipetox264)=1 AddGadgetItem(#Editor_1,-1,x264.s) EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 AddGadgetItem(#Editor_1,-1,ffmpegbat.s) EndIf If GetGadgetState(#yuvtox264)=1 yuv264() AddGadgetItem(#Editor_1,-1,x264.s) EndIf If GetGadgetState(#pipetox264)=1 Or GetGadgetState(#yuvtox264)=1 If GetGadgetState(#an)=0 doaudio() AddGadgetItem(#Editor_1,-1,ffmpegbat.s) domux() AddGadgetItem(#Editor_1,-1,ffmpegbat.s) EndIf EndIf EndIf EndProcedure Procedure buildbatbutton() addtoqueue() DeleteFile(dest.s+"queue.bat") If dest.s="" : dest.s=GetPathPart(inputfile.s) : EndIf mess.s="" For aa=0 To CountGadgetItems(#Editor_1) Debug("riga="+Str(aa)+" = "+GetGadgetItemText(#Editor_1,aa,0)) If OSVersion() >=#PB_OS_Windows_NT3_51 OpenFile(888,dest.s+"queue.bat") FileSeek(888, Lof(888) ) WriteStringN(888,GetGadgetItemText(#Editor_1,aa,0)) EndIf If OSVersion() <#PB_OS_Windows_NT3_51 OpenFile(888,dest.s+"queue.bat") FileSeek(888, Lof(888) ) WriteStringN(888,GetGadgetItemText(#Editor_1,aa,0)) EndIf Next CloseFile(888) ClearGadgetItemList(#Editor_1) MessageRequester("BuildBat","Done! queue.bat created on source file directory") EndProcedure Procedure.s GetExePath() Protected ExePath.s = GetPathPart(ProgramFilename()) If LCase(ExePath) = LCase(GetTemporaryDirectory()) : ExePath = GetCurrentDirectory() : EndIf here.s=ExePath+"/" ProcedureReturn ExePath EndProcedure Open_Window0() pffmpeg.s="" pmplayer.s="" pexe.s=here.s GetExePath() If OSVersion() >#PB_OS_Windows_NT3_51 here.s=GetCurrentDirectory() EndIf ;SetCurrentDirectory(GetPathPart(ProgramFilename())) If OSVersion() <#PB_OS_Windows_NT3_51 If FileSize("/usr/bin/ffmpeg")<>-1 SetGadgetText(#ffmpegpath,"/usr/bin/ffmpeg") pffmpeg.s="/usr/bin/ffmpeg" populatecodec() EndIf If FileSize("/usr/bin/mplayer")<>-1 SetGadgetText(#mplayerpath,"/usr/bin/mplayer") pmplayer.s="/usr/bin/mplayer" EndIf EndIf If OSVersion() > #PB_OS_Windows_NT3_51 If FileSize(here.s+"ffmpeg.exe")<>-1 SetGadgetText(#ffmpegpath,here.s+"ffmpeg.exe") pffmpeg.s=here.s+"ffmpeg.exe" populatecodec() EndIf If FileSize(here.s+"mplayer.exe")<>-1 SetGadgetText(#mplayerpath,here.s+"mplayer.exe") pmplayer.s=here.s+"mplayer.exe" EndIf EndIf If pffmpeg.s="" MessageRequester("FFmpeg Missing", "No ffmpeg founded in /usr/bin current directory." + Chr(10) + "Please specify path in Output label", #PB_MessageRequester_Ok) SetGadgetState(#Panel_0,3) EndIf If pmplayer.s="" MessageRequester("MPlayer Missing", "No mplayer founded in /usr/bin directory." + Chr(10) + "Please specify path in Output label", #PB_MessageRequester_Ok) SetGadgetState(#Panel_0,3) EndIf envvar.s=GetEnvironmentVariable("PATH") SetEnvironmentVariable("PATH",envvar+";"+pffmpeg.s+";"+here.s+";"+pmplayer.s+";") loadcodec() SetGadgetState(#threads,Val(GetEnvironmentVariable("NUMBER_OF_PROCESSORS"))) Repeat ; Start of the event loop Event = WaitWindowEvent() ; This line waits until an event is received from Windows WindowId = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures GadgetID = EventGadget() ; Is it a gadget event? EventType = EventType() ; The event type ;You can place code here, and use the result as parameters for the procedures If Event = #PB_Event_Gadget If GadgetID = #Panel_0 ElseIf GadgetID = #inputfolder ElseIf GadgetID = #inputfolderbutton inputfolderbutton() ElseIf GadgetID = #inputlist If GetGadgetItemText(#inputlist,GetGadgetState(#inputlist),0)<>"Input File" inputfile.s=pathinput.s+(GetGadgetItemText(#inputlist,GetGadgetState(#inputlist) ,0)) infomedia(inputfile.s) EndIf ElseIf GadgetID = #paypal MessageRequester("Thanks For Your Donation!", "Thanks ! Without your support AutoFF will be never a better application!", #PB_MessageRequester_Ok ) RunProgram("https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=azanzani%40gmail%2ecom&item_name=Donate%20to%20AutoMKV%20%21%20Thanks%20for%20your%20Support%20%21%21%21&no_shipping=1&return=http%3a%2f%2fwww%2e64k%2eit%2fandres%2fdata%2fa%2fThanks%2ehtm&no_note=1&tax=0¤cy_code=USD&lc=US&bn=PP%2dDonationsBF&charset=UTF%2d8","","") ElseIf GadgetID = #autocrop autocrop() ElseIf GadgetID = #heightresize ElseIf GadgetID = #trackwidth silentresize() ElseIf GadgetID = #cropbottom silentresize() aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) dar.f = ((twidth.f-acleft.l-acright.l)/twidth.f)/((theight.f-actop.l-acbottom.l)/theight.f)*aspectinfo.f*1.02564 SetGadgetText(#aspect,StrF(dar.f,3)) ElseIf GadgetID = #croptop silentresize() aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) dar.f = ((twidth.f-acleft.l-acright.l)/twidth.f)/((theight.f-actop.l-acbottom.l)/theight.f)*aspectinfo.f*1.02564 SetGadgetText(#aspect,StrF(dar.f,3)) ElseIf GadgetID = #cropleft silentresize() aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) dar.f = ((twidth.f-acleft.l-acright.l)/twidth.f)/((theight.f-actop.l-acbottom.l)/theight.f)*aspectinfo.f*1.02564 SetGadgetText(#aspect,StrF(dar.f,3)) ElseIf GadgetID = #cropleft silentresize() aspectinfo.f=ValF(GetGadgetText(#aspectrationinfo)) dar.f = ((twidth.f-acleft.l-acright.l)/twidth.f)/((theight.f-actop.l-acbottom.l)/theight.f)*aspectinfo.f*1.02564 SetGadgetText(#aspect,StrF(dar.f,3)) ElseIf GadgetID = #widthresize silentscale() ElseIf GadgetID = #preview preview() ElseIf GadgetID = #buildbat buildbatbutton() ElseIf GadgetID = #pipetox264 If GetGadgetState(#pipetox264)=1 : DisableGadget(#mp4box,0) : EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 : DisableGadget(#mp4box,1) : EndIf ElseIf GadgetID = #yuvtox264 If GetGadgetState(#yuvtox264)=1 : DisableGadget(#mp4box,0) : EndIf If GetGadgetState(#pipetox264)=0 And GetGadgetState(#yuvtox264)=0 : DisableGadget(#mp4box,1) : EndIf ElseIf GadgetID = #container ElseIf GadgetID = #cd Dimb() ElseIf GadgetID = #vn SetGadgetState(#pass,0) ElseIf GadgetID = #split ElseIf GadgetID = #addtoqueue addtoqueue() ElseIf GadgetID = #removeallqueue RemoveGadgetItem(#Editor_1,GetGadgetState(#Editor_1)) ElseIf GadgetID = #startqueue startqueue=CreateThread(@startqueue(),0) WaitThread(startqueue,0) ElseIf GadgetID = #outputfolderbutton dest.s=PathRequester("Select your output folder","") If dest.s<>"" : SetGadgetText(#outputfolder,dest.s) : EndIf ElseIf GadgetID = #startbutton start=CreateThread(@start(),0) : WaitThread(start,0) ElseIf GadgetID = #ab Dimb() ElseIf GadgetID = #profile populatevalue() ElseIf GadgetID = #aspect ElseIf GadgetID = #makexml buildxml() ElseIf GadgetID = #ffmpegbroswe pffmpeg.s=OpenFileRequester("Select your ffmpeg","ffmpeg","*.*|*.*",0) If pffmpeg.s<>"" SetGadgetText(#ffmpegpath,pffmpeg.s) populatecodec() EndIf ElseIf GadgetID = #mplayerpath ElseIf GadgetID = #mplayerbrowse pmplayer.s=OpenFileRequester("Select your mplayer","mplayer","*.*|*.*",0) If pmplayer.s<>"" : SetGadgetText(#mplayerpath,pmplayer.s) : EndIf ElseIf GadgetID = #vcodec If GetGadgetText(#vcodec)="copy" : SetGadgetText(#pass,"1 Pass") : EndIf ElseIf GadgetID = #copyvideo SetGadgetText(#pass,"1 Pass") EndIf EndIf Until Event = #PB_Event_CloseWindow ; End of the event loop End ; ;to fix twidth in input file (linux) ;sws will be used only if resizer <> bicubic ; IDE Options = PureBasic 4.10 (Windows - x86) ; CursorPosition = 427 ; FirstLine = 424 ; Folding = ---P-- ; EnableXP ; EnableUser ; UseIcon = autoff.ico ; Executable = AutoFF0996.exe ; DisableDebugger ; CompileSourceDirectory ; Debugger = IDE ; EnableCompileCount = 742 ; EnableBuildCount = 156 ; EnableExeConstant