################################################################################# FastOverlay 0.3c by demi_alucard ################################################################################## Uso: ## video = video principal ## afx = video que você deseja dar overlay ## inicio = inicio do tempo do overlay ## fim = fim do tempo do overlay (opcional) ## Ex: a = AviSource("video.avi") ## b = AviSource("type00.avi") ## FastOverlay(a, b, 150, 300) ## Sobrepõe o vídeo type00.avi em cima do video.avi durante o frame 150 ao 300. ## Observações: ## - Colocar um valor negativo para 'inicio' cortara o começo do clipe afx ## - Caso o valor de inicio não seja especificado, inicio assumirá o valor 0. ## - Caso o valor de fim não seja especificado, fim assumirá o número total de ## frames de afx. Portanto fim é completamente opcional. #################################################################################function FastOverlay(clip video, clip afx, int "inicio", int "fim"){ inicio = default(inicio, 0) fim = default(fim, inicio+afx.framecount-1) # correção para o problema do frame inicial negativo. aux = (inicio < 0) ? inicio : 0 inicio = (inicio < 0) ? 0 : inicio # correção para o problema do video duplicado. fim = (fim == 0) ? video.framecount-1 : fim # correção para o problema do frame 1 levando à metade do vídeo. antes = (inicio == 1) ? video.Trim(0, -1) : video.Trim(0, inicio-1) middle = video.Trim(inicio, fim) depois = video.Trim(fim+1, 0) # corta o inicio de type caso inicio seja um número negativo afx = (aux == 0) ? afx : afx.Trim(Abs(aux), 0) type = Overlay(middle, afx, mask=afx.ShowAlpha()) return (inicio == 0) ? type++depois : antes++type++depois}################################################################################# FastLayer 0.1a by demi_alucard ################################################################################## Uso: ## video = video principal ## afx = video que você deseja dar overlay ## inicio = inicio do tempo do overlay ## fim = fim do tempo do overlay (opcional) ## Ex: a = AviSource("video.avi") ## b = AviSource("type00.avi") ## FastLayer(a, b, 150, 300) ## Sobrepõe o vídeo type00.avi em cima do video.avi durante o frame 150 ao 300. ## Observações: ## - Colocar um valor negativo para 'inicio' cortará o começo do clipe afx ## - Caso o valor de inicio não seja especificado, inicio assumirá o valor 0. ## - Caso o valor de fim não seja especificado, fim assumirá o número total de ## frames de afx. Portanto fim é completamente opcional. #################################################################################function FastLayer(clip video,\ clip afx,\ int "inicio",\ int "fim"){inicio = default(inicio, 0)fim = default(fim, inicio+afx.framecount-1)video = video.ConvertToRGB32()# correção para o problema do frame inicial negativo.aux = (inicio < 0) ? inicio : 0inicio = (inicio < 0) ? 0 : inicio# correção para o problema do video duplicado.fim = (fim == 0) ? video.framecount-1 : fim# correção para o problema do frame 1 levando à metade do vídeo.antes = (inicio == 1) ? video.Trim(0, -1) : video.Trim(0, inicio-1)middle = video.Trim(inicio, fim)depois = video.Trim(fim + 1, 0)# corta o inicio de type caso inicio seja um número negativoafx = (aux == 0) ? afx : afx.Trim(Abs(aux), 0)type = Layer(middle, afx)return (inicio == 0) ? (type++depois).ConvertToYV12()\ : (antes++type++depois).ConvertToYV12()}################################################################################# SideBySide 0.1 by demi_alucard ################################################################################## Uso: ## c = input clip (last) ## type = tipo de alinhamento (0) ## 0- Horizontal ## 1- Vertical ## filters = seus filtros ## Ex: SideBySide("""MipSmooth(preset="AnimeHQ").HQDN3d()""") #################################################################################function SideBySide(clip c,\ int "type",\ string "filters"){assert(strlen(filters) > 0,\"Erro: Você tem que adicionar algum filtro a funcao.")type = default(type, 0)source = (type==0) ? c.Crop(0,0,0,Height(c) / 2) :\ c.Crop(0,0,Width(c) / 2,0)source2 = (type==0) ? c.Crop(0,Height(c) / 2,0,0) :\ c.Crop(Width(c) / 2,0,0,0)filtered = (type==0) ? eval("source2."+filters) :\ eval("source2."+filters)cut = (type==0) ? StackVertical(source.Subtitle("Antes"),\ filtered.Subtitle("Depois")) : StackHorizontal(source.\ Subtitle("Antes"), filtered.Subtitle("Depois"))line = (type==0) ? BlankClip(c, height=2, color=$FFFFFF) :\ BlankClip(c, width=2, color=$FFFFFF)final = (type==0) ? Overlay(cut,line,\ y=(Height(c)/2)-1) :\ Overlay(cut,line,x=(Width(c)/2)-1)return final}################################################################################# FiltrarSecao 0.1 por demi_alucard ################################################################################## Uso: ## c = input clip (last) ## filters = filtros que serão aplicados na seção ## start_frame = frame inicial da seção (0) ## end_frame = frame final da seção (start_frame) #################################################################################function FiltrarSecao(clip c,\ string "filters",\ int "start_frame",\ int "end_frame"){ start_frame = default(start_frame, 0) end_frame = default(end_frame, start_frame) begin = c.Trim(0, start_frame-1) mid = c.Trim(start_frame, end_frame) end = c.Trim(end_frame+1, 0) return begin ++ Eval("mid."+filters) ++ end}################################################################################# ## LAA 0.2 - LimitedAntiAliasing por demi_alucard ## #################################################################################function LAA(clip clp,\ int "ssw",\ int "ssh",\ bool "edge",\ bool "chroma"){ ox = clp.width() oy = clp.height() edge = default(edge, true) ssw = default(ssw, 2) ssh = default(ssh, 2) chroma = default(chroma, false) a = clp.isYV12() ? clp : clp.ConvertToYV12() b = a.LanczosResize(ox*ssw, oy*ssh).TurnLeft()\ .SangNom().TurnRight().SangNom().LanczosResize(ox, oy) c = a.mt_edge("prewitt").mt_inflate() d = (edge==false) ? b : mt_merge(a, b, c) return (chroma==false) ? d : mergechroma(d, a)}################################################################################# ## ChromaShiftYV12 by demi_alucard ## ## BEWARE: It duplicates the last right/top pixels #################################################################################function ChromaShiftYV12(clip c,\ float "chroma_x",\ float "chroma_y"){ ox = c.width() oy = c.height() chroma_x = default(chroma_x, 0) chroma_y = default(chroma_y, 0) shift = c.Spline36Resize(-ox, oy, chroma_x, chroma_y, -ox, oy) return MergeChroma(c, shift)}