## Adapt v0.2 by mf ## ## Converts first clip to have the same characteristics as the second ## (useful for Splice). ## ## Changes since v0.1: ## Handles audio. ## ## Also includes HasAudio(), a boolean to indicate whether your clip ## contains an audio track. ## function HasAudio(clip c) { (AudioRate(c) != 0) } function Adapt(clip input, clip idol) { equalsize = ((input.width == idol.width) && (input.height == idol.height)) input AssumeFPS(idol.framerate) equalsize ? last : LanczosResize(idol.width, idol.height) idol.IsYV12() ? ConvertToYV12() : last idol.IsYUY2() ? ConvertToYUY2() : last idol.IsRGB() ? ConvertToRGB() : last video = last Try { (idol.Audiobits() == 8) ? ConvertAudioTo8Bit() : last (idol.Audiobits() == 16) ? ConvertAudioTo16Bit() : last (idol.Audiobits() == 24) ? ConvertAudioTo24Bit() : last (idol.Audiobits() == 32) ? ConvertAudioTo32Bit() : last idol.IsAudioFloat() ? ConvertAudioToFloat() : last hur = last ((idol.AudioChannels() != 1) && ((hur.AudioChannels() != 2) && \ hur.AudioChannels() != 6)) ? MergeChannels(hur. GetChannel(1), hur.GetChannel(1)) : last flur = last ((idol.AudioChannels() != 1) && ((idol.AudioChannels() == 6) && \ hur.AudioChannels() != 6)) ? MergeChannels(flur. GetChannel(1), flur.GetChannel(2), flur.GetChannel(1), flur.GetChannel(1), \ flur.GetChannel(1), flur.GetChannel(1)) : last audio = last } Catch(err_msg) { global audioerr = err_msg video } Try { Subtitle(audioerr) } Catch(err_msg2) { global audioerr = "N/A" } ((idol.HasAudio() == true) && (input.HasAudiO() == false)) ? \ video.AudioDub(BlankClip(idol)) : Assert(((idol.HasAudio() == false) && \ (input.HasAudio() == false)), "Something went wrong with your audio. Poke mf. \ (Details: "+audioerr+")") ((idol.HasAudio() == false) && (input.HasAudio() == false)) ? video : last ((idol.HasAudio() == false) && (input.HasAudio() == true)) ? video.KillAudio() : last }