Function FAVCStereoMP2(clip Video, clip Audio) {

Audio = (HasAudio(Audio)==True) ? ConvertAudioToFloat(Audio) : Audio

Chan0 = (HasAudio(Audio)==False) ? AudioDub(Video, BlankClip(Video, audio_rate=48000, stereo=true)) : nop()
Video = (HasAudio(Audio)==False) ? Chan0 : Video

Chan1 = (AudioChannels(Audio)==1) ? Audiodub(Video, GetChannel(Audio, 1, 1)) : nop()
Video = (AudioChannels(Audio)==1) ? Chan1 : Video

Video = (AudioChannels(Audio)==2) ? Audiodub(Video, Audio) : Video

FrontLeft = (AudioChannels(Audio)==3) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.5858, 0.4142) : nop()
FrontRight = (AudioChannels(Audio)==3) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 3), 0.5858, 0.4142) : nop()
Chan3 = (AudioChannels(Audio)==3) ? Audiodub(Video, MergeChannels(FrontLeft, FrontRight)) : nop()
Video = (AudioChannels(Audio)==3) ? Chan3 : Video

TotalLeft = (AudioChannels(Audio)==4) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.5, 0.5) : nop()
TotalRight = (AudioChannels(Audio)==4) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 4), 0.5, 0.5) : nop()
Chan4 = (AudioChannels(Audio)==4) ? Audiodub(Video, MergeChannels(TotalLeft, TotalRight)) : nop()
Video = (AudioChannels(Audio)==4) ? Chan4 : Video

FrontLeft = (AudioChannels(Audio)==5) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.3694, 0.2612) : nop()
FrontRight = (AudioChannels(Audio)==5) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 3), 0.3694, 0.2612) : nop()
TotalLeft = (AudioChannels(Audio)==5) ? MixAudio(FrontLeft, GetChannel(Audio, 4), 1, 0.3694) : nop()
TotalRight = (AudioChannels(Audio)==5) ? MixAudio(FrontRight, GetChannel(Audio, 5), 1, 0.3694) : nop()
Chan5 = (AudioChannels(Audio)==5) ? Audiodub(Video, MergeChannels(TotalLeft, TotalRight)) : nop()
Video = (AudioChannels(Audio)==5) ? Chan5 : Video

FrontLeft = (AudioChannels(Audio)>=6) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.2929, 0.2071) : nop()
FrontRight = (AudioChannels(Audio)>=6) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 3), 0.2929, 0.2071) : nop()
BackLeft = (AudioChannels(Audio)>=6) ? MixAudio(GetChannel(Audio, 5), GetChannel(Audio, 4), 0.2929, 0.2071) : nop()
BackRight = (AudioChannels(Audio)>=6) ? MixAudio(GetChannel(Audio, 6), GetChannel(Audio, 4), 0.2929, 0.2071) : nop()
TotalLeft = (AudioChannels(Audio)>=6) ? MixAudio(FrontLeft, BackLeft, 1, 1) : nop()
TotalRight = (AudioChannels(Audio)>=6) ? MixAudio(FrontRight, BackRight, 1, 1) : nop()
Chan6 = (AudioChannels(Audio)>=6) ? Audiodub(Video, MergeChannels(TotalLeft, TotalRight)) : nop()
Video = (AudioChannels(Audio)>=6) ? Chan6 : Video


Try {
Video = (HasAudio(Audio)==True) ? SSRC(Video, 48000) : Video
}
Catch(Err_Msg) {
Video = (HasAudio(Audio)==True) ? ResampleAudio(Video, 48000) : Video
}

Video = (HasAudio(Audio)==True) ? ConvertAudioTo16bit(Video) : Video

return(Video)
}


Function FAVCAudio(clip Video, clip Audio) {

Audio = (HasAudio(Audio)==True) ? ConvertAudioToFloat(Audio) : Audio

ChanCreate = (HasAudio(Audio)==False) ? BlankClip(Video, audio_rate=48000, stereo=true) : nop()
Video = (HasAudio(Audio)==False) ? Audiodub(Video, ChanCreate) : Video

Video = (AudioChannels(Audio)==1) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==2) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==3) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==4) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==5) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==6) ? Audiodub(Video, Audio) : Video
ChanTrunc = (AudioChannels(Audio)>6) ? GetChannel(Audio,1,2,3,4,5,6) : nop()
Video = (AudioChannels(Audio)>6) ? Audiodub(Video, ChanTrunc) : Video


Try {
Video = (HasAudio(Audio)==True) ? SSRC(Video, 48000) : Video
}
Catch(Err_Msg) {
Video = (HasAudio(Audio)==True) ? ResampleAudio(Video, 48000) : Video
}

Video = (HasAudio(Audio)==True) ? ConvertAudioTo16bit(Video) : Video

return(Video)
}


Function FAVCStereoMP2Swap(clip Video, clip Audio) {

Audio = (HasAudio(Audio)==True) ? ConvertAudioToFloat(Audio) : Audio

Chan0 = (HasAudio(Audio)==False) ? AudioDub(Video, BlankClip(Video, audio_rate=48000, stereo=true)) : nop()
Video = (HasAudio(Audio)==False) ? Chan0 : Video

Chan1 = (AudioChannels(Audio)==1) ? Audiodub(Video, GetChannel(Audio, 1, 1)) : nop()
Video = (AudioChannels(Audio)==1) ? Chan1 : Video

Video = (AudioChannels(Audio)==2) ? Audiodub(Video, Audio) : Video

FrontLeft = (AudioChannels(Audio)==3) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.5858, 0.4142) : nop()
FrontRight = (AudioChannels(Audio)==3) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 3), 0.5858, 0.4142) : nop()
Chan3 = (AudioChannels(Audio)==3) ? Audiodub(Video, MergeChannels(FrontLeft, FrontRight)) : nop()
Video = (AudioChannels(Audio)==3) ? Chan3 : Video

TotalLeft = (AudioChannels(Audio)==4) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.5, 0.5) : nop()
TotalRight = (AudioChannels(Audio)==4) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 4), 0.5, 0.5) : nop()
Chan4 = (AudioChannels(Audio)==4) ? Audiodub(Video, MergeChannels(TotalLeft, TotalRight)) : nop()
Video = (AudioChannels(Audio)==4) ? Chan4 : Video

FrontLeft = (AudioChannels(Audio)==5) ? MixAudio(GetChannel(Audio, 1), GetChannel(Audio, 3), 0.3694, 0.2612) : nop()
FrontRight = (AudioChannels(Audio)==5) ? MixAudio(GetChannel(Audio, 2), GetChannel(Audio, 3), 0.3694, 0.2612) : nop()
TotalLeft = (AudioChannels(Audio)==5) ? MixAudio(FrontLeft, GetChannel(Audio, 4), 1, 0.3694) : nop()
TotalRight = (AudioChannels(Audio)==5) ? MixAudio(FrontRight, GetChannel(Audio, 5), 1, 0.3694) : nop()
Chan5 = (AudioChannels(Audio)==5) ? Audiodub(Video, MergeChannels(TotalLeft, TotalRight)) : nop()
Video = (AudioChannels(Audio)==5) ? Chan5 : Video

ChanSwap = (AudioChannels(Audio)>=6) ? GetChannel(Audio,1,3,2,5,6,4) : nop()
Video = (AudioChannels(Audio)>=6) ? Audiodub(Video, ChanSwap) : Video


Try {
Video = (HasAudio(Audio)==True) ? SSRC(Video, 48000) : Video
}
Catch(Err_Msg) {
Video = (HasAudio(Audio)==True) ? ResampleAudio(Video, 48000) : Video
}

Video = (HasAudio(Audio)==True) ? ConvertAudioTo16bit(Video) : Video

return(Video)
}

Function FAVCAudioSwap(clip Video, clip Audio) {

Audio = (HasAudio(Audio)==True) ? ConvertAudioToFloat(Audio) : Audio

ChanCreate = (HasAudio(Audio)==False) ? BlankClip(Video, audio_rate=48000, stereo=true) : nop()
Video = (HasAudio(Audio)==False) ? Audiodub(Video, ChanCreate) : Video

Video = (AudioChannels(Audio)==1) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==2) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==3) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==4) ? Audiodub(Video, Audio) : Video
Video = (AudioChannels(Audio)==5) ? Audiodub(Video, Audio) : Video
ChanTrunc = (AudioChannels(Audio)>=6) ? GetChannel(Audio,1,3,2,5,6,4) : nop()
Video = (AudioChannels(Audio)>=6) ? Audiodub(Video, ChanTrunc) : Video


Try {
Video = (HasAudio(Audio)==True) ? SSRC(Video, 48000) : Video
}
Catch(Err_Msg) {
Video = (HasAudio(Audio)==True) ? ResampleAudio(Video, 48000) : Video
}

Video = (HasAudio(Audio)==True) ? ConvertAudioTo16bit(Video) : Video

return(Video)
}