# ========================================================================= # [ PSPVC :: PSP Video Converter ] - [http://pspvc.nswardh.com] # ========================================================================= # ========================================================================= # Add Logo/Watermark # ========================================================================= function Logo(clip, string "src", string "offset", int "logo_x", int "logo_y", int "opacity", int "f_in", int "f_out", int "start", int "stop") { stop = (stop >= FrameCount(clip) || stop <= 0) ? FrameCount(clip) : stop start = (start <= 0) ? 0 : start logo = ImageSource(src, use_DevIL=true, pixel_type="rgb32") img_x = Width(logo) img_y = Height(logo) (offset == "UpLeft") ? Eval(""" im_x = logo_x im_y = logo_y """) : ( \ (offset == "UpRight") ? Eval(""" im_x = Width(clip) - img_x im_x = (logo_x < 0) ? (im_x -- logo_x) : (im_x + logo_x) im_y = logo_y """) : ( \ (offset == "LowLeft") ? Eval(""" im_x = logo_x im_y = Height(clip) - img_y - logo_y im_y = (logo_x < 0) ? (im_y -- logo_y) : (im_y + logo_y) """) : ( \ (offset == "LowRight") ? Eval(""" im_x = Width(clip) - img_x im_x = (logo_x < 0) ? (im_x -- logo_x) : (im_x + logo_x) im_y = Height(clip) - img_y im_y = (logo_x < 0) ? (im_y -- logo_y) : (im_y + logo_y) """) \ : offset ))) # Förläng logo klippet logo = logo + logo + logo + logo + logo logo = logo + logo + logo + logo + logo logo = logo + logo + logo + logo + logo logo = logo + logo + logo + logo + logo logo = logo + logo + logo + logo + logo # Trimma logo till samma längd som clip logo = Trim(logo, 0, (stop - start)) logo = (f_in > 0) ? FadeIn(logo, f_in) : logo logo = (f_out > 0) ? FadeOut(logo, f_out) : logo a_stop = ((start - 1) >= 0) ? start - 1 : 0 c_start = ((stop + 1) <= FrameCount(clip)) ? stop + 1 : 0 (start == 0 && stop == FrameCount(clip)) ? Eval(""" layer(Trim(clip, start, stop).ConvertToRGB32(), logo, x=im_x, y=im_y, op="add", level=opacity).ConvertToYV12() """) : ( \ (start == 0 && stop < FrameCount(clip)) ? Eval(""" a = layer(Trim(clip, start, stop).ConvertToRGB32(), logo, x=im_x, y=im_y, op="add", level=opacity).ConvertToYV12() b = Trim(clip, c_start, 0) a + b """) : ( \ (start > 0 && stop == FrameCount(clip)) ? Eval(""" a = Trim(clip, 0, a_stop) b = layer(Trim(clip, start, stop).ConvertToRGB32(), logo, x=im_x, y=im_y, op="add", level=opacity).ConvertToYV12() a + b """) : ( \ (start > 0 && stop < FrameCount(clip)) ? Eval(""" a = Trim(clip, 0, a_stop) b = layer(Trim(clip, start, stop).ConvertToRGB32(), logo, x=im_x, y=im_y, op="add", level=opacity).ConvertToYV12() c = Trim(clip, c_start, 0) a + b + c """) \ : layer(Trim(clip, start, stop).ConvertToRGB32(), logo, x=im_x, y=im_y, op="add", level=opacity).ConvertToYV12() ))) } # ========================================================================= # Downmix 5:1 to Stereo # ========================================================================= function DownMixAudio(clip src) { src = (AudioChannels(src) >=6) ? DoDownMix(src) : src return src } function DoDownMix(clip src) { flr = GetChannel(src, 1, 2) fcc = GetChannel(src, 3, 3) lrc = MixAudio(flr, fcc, 0.2646, 0.1870) lfe = GetChannel(src, 4, 4) lrc = MixAudio(lrc, lfe, 1.0, 0.1870) bl = GetChannel(src, 5) br = GetChannel(src, 6) sl = MixAudio(bl, br, 0.2291, 0.1323) sr = MixAudio(bl, br, -0.1323, -0.2291) blr = MergeChannels(sl, sr) return MixAudio(lrc, blr, 1.0, 1.0) } # ========================================================================= # Add Silence # ========================================================================= function AddSilence(clip src, duration) { return Tone(duration, 440, Audiorate(src), AudioChannels(src), "silence", 1.0) } # ========================================================================= # Change colorspace # ========================================================================= function goYV12(clip src) { return (IsYV12(src) ? src : ConvertToYV12(src)) } # ========================================================================= # Preview # ========================================================================= function displayPreview(clip src) { h_pad = (480 - Width(src)) / 2 v_pad = (272 - Height(src)) / 2 return AddBorders(src, h_pad, v_pad, h_pad, v_pad) }