From 501f72cbc8a9c04b8e28875eda035748ecd2b03a Mon Sep 17 00:00:00 2001
From: Conrad Zelck <c.zelck@ndr.de>
Date: Fri, 17 Mar 2023 16:02:09 +0100
Subject: [PATCH] first commit of sources

Signed-off-by: Conrad Zelck <git@simpel.cc>
---
 .gitignore                           |   7 +
 MXF-Track-Swap.au3                   | 749 +++++++++++++++++++++++++++
 README.md                            |  49 ++
 icon/swap.ico                        | Bin 0 -> 4211 bytes
 images/MXF-Track-Swap_drop-files.png | Bin 0 -> 6671 bytes
 images/MXF-Track-Swap_muxing.png     | Bin 0 -> 8427 bytes
 images/MXF-Track-Swap_routing.png    | Bin 0 -> 7914 bytes
 7 files changed, 805 insertions(+)
 create mode 100644 .gitignore
 create mode 100644 MXF-Track-Swap.au3
 create mode 100644 README.md
 create mode 100644 icon/swap.ico
 create mode 100644 images/MXF-Track-Swap_drop-files.png
 create mode 100644 images/MXF-Track-Swap_muxing.png
 create mode 100644 images/MXF-Track-Swap_routing.png

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..44b0beb
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,7 @@
+#Ignore
+*.exe
+*_stripped.au3
+__Stripped
+BAK
+Thumbs.db
+
diff --git a/MXF-Track-Swap.au3 b/MXF-Track-Swap.au3
new file mode 100644
index 0000000..98d2b62
--- /dev/null
+++ b/MXF-Track-Swap.au3
@@ -0,0 +1,749 @@
+#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
+#AutoIt3Wrapper_Icon=icon\swap.ico
+#AutoIt3Wrapper_UseX64=n
+#AutoIt3Wrapper_Res_Comment=Swaps audio tracks in mxf files.
+#AutoIt3Wrapper_Res_Description=Swaps audio tracks in mxf files.
+#AutoIt3Wrapper_Res_Fileversion=1.0.0.4
+#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=p
+#AutoIt3Wrapper_Res_LegalCopyright=Conrad Zelck
+#AutoIt3Wrapper_Res_SaveSource=y
+#AutoIt3Wrapper_Res_Language=1031
+#AutoIt3Wrapper_Res_Field=Copyright|Conrad Zelck
+#AutoIt3Wrapper_Res_Field=Compile Date|%date% %time%
+#AutoIt3Wrapper_AU3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
+#AutoIt3Wrapper_Run_Au3Stripper=y
+#Au3Stripper_Parameters=/mo
+#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
+#include <GUIConstantsEx.au3>
+#include <StaticConstants.au3>
+#include <MsgBoxConstants.au3>
+#include <ColorConstants.au3>
+#include <FileConstants.au3>
+#include <AutoItConstants.au3>
+#include <Date.au3>
+#include <File.au3>
+#include <TrayCox.au3>
+
+; Known issues:
+; - if the external stereo wav file is routed to only one channel (e.g. "[R]") it breaks: "Filter channelsplit:FL has an unconnected outut"
+
+AutoItSetOption("GUICoordMode", 1)
+
+Global $g_bMxfAvailable = False
+Global $g_bWavAvailable = False
+Global $g_hGUI
+Global $g_sMXFFile, $g_sWAVFile
+Global $g_aDropFiles[0]
+
+; if parameter given via sendto or drag&drop onto AppIcon
+ConsoleWrite("$CmdLineRaw: " & $CmdLineRaw & @CRLF)
+If $CmdLine[0] > 0 Then
+	_CheckForInputFiles($CmdLine)
+EndIf
+
+; if no parameters are given open a drag and drop gui
+$g_hGUI = GUICreate("MXF-Track-Swap", 400, 340, -1, -1, -1, $WS_EX_ACCEPTFILES)
+GUICtrlCreateLabel(@CRLF & "Drag&&drop your files here." & @CRLF & @CRLF & "You must provide an MXF file." & @CRLF & "Additionally you can provide a stereo WAV file too." , 20, 20, 360, 100, BitOR($SS_CENTER, $SS_SUNKEN))
+GUICtrlSetFont(-1, 10)
+GUICtrlCreateLabel("MXF file:" , 20, 140, 360, 20)
+GUICtrlSetFont(-1, 10)
+Local $hLMXF = GUICtrlCreateLabel(_FileName($g_sMXFFile) , 20, 170, 360, 20)
+GUICtrlSetFont(-1, 10)
+GUICtrlCreateLabel("WAV file:" , 20, 210, 360, 20)
+GUICtrlSetFont(-1, 10)
+Local $hLWAV = GUICtrlCreateLabel(_FileName($g_sWAVFile) , 20, 240, 360, 20)
+GUICtrlSetFont(-1, 10)
+Local $hBNext = GUICtrlCreateButton("Next", 100, 290, 200, 30, $BS_DEFPUSHBUTTON)
+GUICtrlSetFont(-1, 10)
+If Not $g_bMxfAvailable Then GUICtrlSetState(-1, $GUI_DISABLE)
+Local $FILES_DROPPED = GUICtrlCreateDummy()
+GUIRegisterMsg($WM_DROPFILES, 'WM_DROPFILES_FUNC')
+GUISetState()
+
+Local $sFile
+While True
+    Switch GUIGetMsg()
+        Case $GUI_EVENT_CLOSE
+            Exit
+        Case $FILES_DROPPED
+			_CheckForInputFiles($g_aDropFiles)
+			If $g_bMxfAvailable Then
+				GUICtrlSetState($hBNext, $GUI_ENABLE)
+				GUICtrlSetData($hLMXF, _FileName($g_sMXFFile))
+			EndIf
+			If $g_bWavAvailable Then GUICtrlSetData($hLWAV, _FileName($g_sWAVFile))
+		Case $hBNext
+			ExitLoop
+    EndSwitch
+WEnd
+GUIDelete($g_hGUI)
+
+#Region - GUI Routing
+AutoItSetOption("GUICoordMode", 0)
+$g_hGUI = GUICreate("MXF-Track-Swap Routing", 320, 450)
+GUICtrlCreateLabel("Source", 20, 20, 200, 20)
+GUICtrlCreateLabel("Mute", 10, 20, 30, 20)
+GUICtrlCreateLabel("A1", 10, 30, 20, 20)
+GUICtrlCreateLabel("A2", -1, 20, 20, 20)
+GUICtrlCreateLabel("A3", -1, 30, 20, 20)
+GUICtrlCreateLabel("A4", -1, 20, 20, 20)
+GUICtrlCreateLabel("A5", -1, 30, 20, 20)
+GUICtrlCreateLabel("A6", -1, 20, 20, 20)
+GUICtrlCreateLabel("A7", -1, 30, 20, 20)
+GUICtrlCreateLabel("A8", -1, 20, 20, 20)
+Local $hLL = GUICtrlCreateLabel("L", -1, 30, 20, 20)
+Local $hLR = GUICtrlCreateLabel("R", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetColor($hLL, $COLOR_SILVER)
+	GUICtrlSetColor($hLR, $COLOR_SILVER)
+EndIf
+
+GUIStartGroup()
+Global $g_hRm1 = GUICtrlCreateRadio("", 30, -253, 20, 20)
+Global $g_hR11 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR21 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR31 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR41 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR51 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR61 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR71 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR81 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL1 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR1 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL1, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR1, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A1", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm2 = GUICtrlCreateRadio("", 20, -280, 20, 20)
+Global $g_hR12 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR22 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR32 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR42 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR52 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR62 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR72 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR82 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL2 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR2 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL2, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR2, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A2", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm3 = GUICtrlCreateRadio("", 30, -280, 20, 20)
+Global $g_hR13 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR23 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR33 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR43 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR53 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR63 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR73 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR83 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL3 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR3 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL3, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR3, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A3", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm4 = GUICtrlCreateRadio("", 20, -280, 20, 20)
+Global $g_hR14 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR24 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR34 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR44 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR54 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR64 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR74 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR84 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL4 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR4 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL4, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR4, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A4", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm5 = GUICtrlCreateRadio("", 30, -280, 20, 20)
+Global $g_hR15 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR25 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR35 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR45 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR55 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR65 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR75 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR85 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL5 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR5 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL5, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR5, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A5", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm6 = GUICtrlCreateRadio("", 20, -280, 20, 20)
+Global $g_hR16 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR26 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR36 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR46 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR56 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR66 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR76 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR86 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL6 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR6 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL6, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR6, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A6", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm7 = GUICtrlCreateRadio("", 30, -280, 20, 20)
+Global $g_hR17 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR27 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR37 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR47 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR57 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR67 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR77 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hR87 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hRL7 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR7 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL7, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR7, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A7", 1, 30, -1, -1)
+
+GUIStartGroup()
+Global $g_hRm8 = GUICtrlCreateRadio("", 20, -280, 20, 20)
+Global $g_hR18 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR28 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR38 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR48 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR58 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR68 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+Global $g_hR78 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hR88 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+GUICtrlSetState(-1, $GUI_CHECKED)
+Global $g_hRL8 = GUICtrlCreateRadio("", -1, 30, 20, 20)
+Global $g_hRR8 = GUICtrlCreateRadio("", -1, 20, 20, 20)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hRL8, $GUI_DISABLE)
+	GUICtrlSetState($g_hRR8, $GUI_DISABLE)
+EndIf
+GUICtrlCreateLabel("A8", 1, 30, -1, -1)
+GUICtrlCreateLabel("Target", 20, -1, 200, 20)
+
+Global $g_hButtonChangeAD  = GUICtrlCreateButton("1+2 <--> 5+6", -250, 30, 80, 30)
+Global $g_hButtonExtAD56  = GUICtrlCreateButton("ext. AD > 5+6", 100, -1, 80, 30)
+Global $g_hButtonExtAD12  = GUICtrlCreateButton("ext. AD > 1+2", 100, -1, 80, 30)
+If Not $g_bWavAvailable Then
+	GUICtrlSetState($g_hButtonExtAD56, $GUI_DISABLE)
+	GUICtrlSetState($g_hButtonExtAD12, $GUI_DISABLE)
+EndIf
+
+Global $g_hButtonOK  = GUICtrlCreateButton("Swap", -200, 50, 280, 30)
+
+GUISetState(@SW_SHOW)
+AutoItSetOption("GUICoordMode", 1)
+#EndRegion GUI Routing
+
+While True
+    Switch GUIGetMsg()
+        Case $GUI_EVENT_CLOSE
+            ExitLoop
+		Case $g_hButtonChangeAD
+			GUICtrlSetState($g_hR15, $GUI_CHECKED)
+			GUICtrlSetState($g_hR26, $GUI_CHECKED)
+			GUICtrlSetState($g_hR33, $GUI_CHECKED)
+			GUICtrlSetState($g_hR44, $GUI_CHECKED)
+			GUICtrlSetState($g_hR51, $GUI_CHECKED)
+			GUICtrlSetState($g_hR62, $GUI_CHECKED)
+			GUICtrlSetState($g_hR77, $GUI_CHECKED)
+			GUICtrlSetState($g_hR88, $GUI_CHECKED)
+		Case $g_hButtonExtAD56
+			GUICtrlSetState($g_hR11, $GUI_CHECKED)
+			GUICtrlSetState($g_hR22, $GUI_CHECKED)
+			GUICtrlSetState($g_hR33, $GUI_CHECKED)
+			GUICtrlSetState($g_hR44, $GUI_CHECKED)
+			GUICtrlSetState($g_hRL5, $GUI_CHECKED)
+			GUICtrlSetState($g_hRR6, $GUI_CHECKED)
+			GUICtrlSetState($g_hR77, $GUI_CHECKED)
+			GUICtrlSetState($g_hR88, $GUI_CHECKED)
+		Case $g_hButtonExtAD12
+			GUICtrlSetState($g_hRL1, $GUI_CHECKED)
+			GUICtrlSetState($g_hRR2, $GUI_CHECKED)
+			GUICtrlSetState($g_hR33, $GUI_CHECKED)
+			GUICtrlSetState($g_hR44, $GUI_CHECKED)
+			GUICtrlSetState($g_hR15, $GUI_CHECKED)
+			GUICtrlSetState($g_hR26, $GUI_CHECKED)
+			GUICtrlSetState($g_hR77, $GUI_CHECKED)
+			GUICtrlSetState($g_hR88, $GUI_CHECKED)
+		Case $g_hButtonOK
+			If GUICtrlRead($g_hR11) = $GUI_CHECKED And GUICtrlRead($g_hR22) = $GUI_CHECKED And GUICtrlRead($g_hR33) = $GUI_CHECKED And GUICtrlRead($g_hR44) = $GUI_CHECKED And GUICtrlRead($g_hR55) = $GUI_CHECKED And GUICtrlRead($g_hR66) = $GUI_CHECKED And GUICtrlRead($g_hR77) = $GUI_CHECKED And GUICtrlRead($g_hR88) = $GUI_CHECKED Then
+				MsgBox($MB_TOPMOST, "Warning", "Track routing is unchanged - no swapping necessary.")
+			Else
+				ExitLoop
+			EndIf
+    EndSwitch
+WEnd
+
+#Region - track setting
+; set audio tracks
+Global $g_aRouting[9]
+Global $g_bMuteRouted = False
+Global $g_bExternalWavRouted = False
+; track 1
+Select
+	Case GUICtrlRead($g_hRm1) = $GUI_CHECKED
+		$g_aRouting[1] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR11) = $GUI_CHECKED
+		$g_aRouting[1] = "0:1"
+	Case GUICtrlRead($g_hR21) = $GUI_CHECKED
+		$g_aRouting[1] = "0:2"
+	Case GUICtrlRead($g_hR31) = $GUI_CHECKED
+		$g_aRouting[1] = "0:3"
+	Case GUICtrlRead($g_hR41) = $GUI_CHECKED
+		$g_aRouting[1] = "0:4"
+	Case GUICtrlRead($g_hR51) = $GUI_CHECKED
+		$g_aRouting[1] = "0:5"
+	Case GUICtrlRead($g_hR61) = $GUI_CHECKED
+		$g_aRouting[1] = "0:6"
+	Case GUICtrlRead($g_hR71) = $GUI_CHECKED
+		$g_aRouting[1] = "0:7"
+	Case GUICtrlRead($g_hR81) = $GUI_CHECKED
+		$g_aRouting[1] = "0:8"
+	Case GUICtrlRead($g_hRL1) = $GUI_CHECKED
+		$g_aRouting[1] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR1) = $GUI_CHECKED
+		$g_aRouting[1] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 2
+Select
+	Case GUICtrlRead($g_hRm2) = $GUI_CHECKED
+		$g_aRouting[2] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR12) = $GUI_CHECKED
+		$g_aRouting[2] = "0:1"
+	Case GUICtrlRead($g_hR22) = $GUI_CHECKED
+		$g_aRouting[2] = "0:2"
+	Case GUICtrlRead($g_hR32) = $GUI_CHECKED
+		$g_aRouting[2] = "0:3"
+	Case GUICtrlRead($g_hR42) = $GUI_CHECKED
+		$g_aRouting[2] = "0:4"
+	Case GUICtrlRead($g_hR52) = $GUI_CHECKED
+		$g_aRouting[2] = "0:5"
+	Case GUICtrlRead($g_hR62) = $GUI_CHECKED
+		$g_aRouting[2] = "0:6"
+	Case GUICtrlRead($g_hR72) = $GUI_CHECKED
+		$g_aRouting[2] = "0:7"
+	Case GUICtrlRead($g_hR82) = $GUI_CHECKED
+		$g_aRouting[2] = "0:8"
+	Case GUICtrlRead($g_hRL2) = $GUI_CHECKED
+		$g_aRouting[2] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR2) = $GUI_CHECKED
+		$g_aRouting[2] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 3
+Select
+	Case GUICtrlRead($g_hRm3) = $GUI_CHECKED
+		$g_aRouting[3] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR13) = $GUI_CHECKED
+		$g_aRouting[3] = "0:1"
+	Case GUICtrlRead($g_hR23) = $GUI_CHECKED
+		$g_aRouting[3] = "0:2"
+	Case GUICtrlRead($g_hR33) = $GUI_CHECKED
+		$g_aRouting[3] = "0:3"
+	Case GUICtrlRead($g_hR43) = $GUI_CHECKED
+		$g_aRouting[3] = "0:4"
+	Case GUICtrlRead($g_hR53) = $GUI_CHECKED
+		$g_aRouting[3] = "0:5"
+	Case GUICtrlRead($g_hR63) = $GUI_CHECKED
+		$g_aRouting[3] = "0:6"
+	Case GUICtrlRead($g_hR73) = $GUI_CHECKED
+		$g_aRouting[3] = "0:7"
+	Case GUICtrlRead($g_hR83) = $GUI_CHECKED
+		$g_aRouting[3] = "0:8"
+	Case GUICtrlRead($g_hRL3) = $GUI_CHECKED
+		$g_aRouting[3] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR3) = $GUI_CHECKED
+		$g_aRouting[3] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 4
+Select
+	Case GUICtrlRead($g_hRm4) = $GUI_CHECKED
+		$g_aRouting[4] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR14) = $GUI_CHECKED
+		$g_aRouting[4] = "0:1"
+	Case GUICtrlRead($g_hR24) = $GUI_CHECKED
+		$g_aRouting[4] = "0:2"
+	Case GUICtrlRead($g_hR34) = $GUI_CHECKED
+		$g_aRouting[4] = "0:3"
+	Case GUICtrlRead($g_hR44) = $GUI_CHECKED
+		$g_aRouting[4] = "0:4"
+	Case GUICtrlRead($g_hR54) = $GUI_CHECKED
+		$g_aRouting[4] = "0:5"
+	Case GUICtrlRead($g_hR64) = $GUI_CHECKED
+		$g_aRouting[4] = "0:6"
+	Case GUICtrlRead($g_hR74) = $GUI_CHECKED
+		$g_aRouting[4] = "0:7"
+	Case GUICtrlRead($g_hR84) = $GUI_CHECKED
+		$g_aRouting[4] = "0:8"
+	Case GUICtrlRead($g_hRL4) = $GUI_CHECKED
+		$g_aRouting[4] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR4) = $GUI_CHECKED
+		$g_aRouting[4] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 5
+Select
+	Case GUICtrlRead($g_hRm5) = $GUI_CHECKED
+		$g_aRouting[5] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR15) = $GUI_CHECKED
+		$g_aRouting[5] = "0:1"
+	Case GUICtrlRead($g_hR25) = $GUI_CHECKED
+		$g_aRouting[5] = "0:2"
+	Case GUICtrlRead($g_hR35) = $GUI_CHECKED
+		$g_aRouting[5] = "0:3"
+	Case GUICtrlRead($g_hR45) = $GUI_CHECKED
+		$g_aRouting[5] = "0:4"
+	Case GUICtrlRead($g_hR55) = $GUI_CHECKED
+		$g_aRouting[5] = "0:5"
+	Case GUICtrlRead($g_hR65) = $GUI_CHECKED
+		$g_aRouting[5] = "0:6"
+	Case GUICtrlRead($g_hR75) = $GUI_CHECKED
+		$g_aRouting[5] = "0:7"
+	Case GUICtrlRead($g_hR85) = $GUI_CHECKED
+		$g_aRouting[5] = "0:8"
+	Case GUICtrlRead($g_hRL5) = $GUI_CHECKED
+		$g_aRouting[5] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR5) = $GUI_CHECKED
+		$g_aRouting[5] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 6
+Select
+	Case GUICtrlRead($g_hRm6) = $GUI_CHECKED
+		$g_aRouting[6] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR16) = $GUI_CHECKED
+		$g_aRouting[6] = "0:1"
+	Case GUICtrlRead($g_hR26) = $GUI_CHECKED
+		$g_aRouting[6] = "0:2"
+	Case GUICtrlRead($g_hR36) = $GUI_CHECKED
+		$g_aRouting[6] = "0:3"
+	Case GUICtrlRead($g_hR46) = $GUI_CHECKED
+		$g_aRouting[6] = "0:4"
+	Case GUICtrlRead($g_hR56) = $GUI_CHECKED
+		$g_aRouting[6] = "0:5"
+	Case GUICtrlRead($g_hR66) = $GUI_CHECKED
+		$g_aRouting[6] = "0:6"
+	Case GUICtrlRead($g_hR76) = $GUI_CHECKED
+		$g_aRouting[6] = "0:7"
+	Case GUICtrlRead($g_hR86) = $GUI_CHECKED
+		$g_aRouting[6] = "0:8"
+	Case GUICtrlRead($g_hRL6) = $GUI_CHECKED
+		$g_aRouting[6] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR6) = $GUI_CHECKED
+		$g_aRouting[6] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 7
+Select
+	Case GUICtrlRead($g_hRm7) = $GUI_CHECKED
+		$g_aRouting[7] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR17) = $GUI_CHECKED
+		$g_aRouting[7] = "0:1"
+	Case GUICtrlRead($g_hR27) = $GUI_CHECKED
+		$g_aRouting[7] = "0:2"
+	Case GUICtrlRead($g_hR37) = $GUI_CHECKED
+		$g_aRouting[7] = "0:3"
+	Case GUICtrlRead($g_hR47) = $GUI_CHECKED
+		$g_aRouting[7] = "0:4"
+	Case GUICtrlRead($g_hR57) = $GUI_CHECKED
+		$g_aRouting[7] = "0:5"
+	Case GUICtrlRead($g_hR67) = $GUI_CHECKED
+		$g_aRouting[7] = "0:6"
+	Case GUICtrlRead($g_hR77) = $GUI_CHECKED
+		$g_aRouting[7] = "0:7"
+	Case GUICtrlRead($g_hR87) = $GUI_CHECKED
+		$g_aRouting[7] = "0:8"
+	Case GUICtrlRead($g_hRL7) = $GUI_CHECKED
+		$g_aRouting[7] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR7) = $GUI_CHECKED
+		$g_aRouting[7] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+; track 8
+Select
+	Case GUICtrlRead($g_hRm8) = $GUI_CHECKED
+		$g_aRouting[8] = "1:0"
+		$g_bMuteRouted = True
+	Case GUICtrlRead($g_hR18) = $GUI_CHECKED
+		$g_aRouting[8] = "0:1"
+	Case GUICtrlRead($g_hR28) = $GUI_CHECKED
+		$g_aRouting[8] = "0:2"
+	Case GUICtrlRead($g_hR38) = $GUI_CHECKED
+		$g_aRouting[8] = "0:3"
+	Case GUICtrlRead($g_hR48) = $GUI_CHECKED
+		$g_aRouting[8] = "0:4"
+	Case GUICtrlRead($g_hR58) = $GUI_CHECKED
+		$g_aRouting[8] = "0:5"
+	Case GUICtrlRead($g_hR68) = $GUI_CHECKED
+		$g_aRouting[8] = "0:6"
+	Case GUICtrlRead($g_hR78) = $GUI_CHECKED
+		$g_aRouting[8] = "0:7"
+	Case GUICtrlRead($g_hR88) = $GUI_CHECKED
+		$g_aRouting[8] = "0:8"
+	Case GUICtrlRead($g_hRL8) = $GUI_CHECKED
+		$g_aRouting[8] = '"[L]"'
+		$g_bExternalWavRouted = True
+	Case GUICtrlRead($g_hRR8) = $GUI_CHECKED
+		$g_aRouting[8] = '"[R]"'
+		$g_bExternalWavRouted = True
+EndSelect
+#EndRegion - track setting
+;~ _ArrayDisplay($g_aRouting)
+For $i = 1 To UBound($g_aRouting) -1
+	ConsoleWrite($g_aRouting[$i] & @CRLF)
+Next
+ConsoleWrite("$g_bMuteRouted: " & $g_bMuteRouted & @CRLF)
+ConsoleWrite("$g_bExternalWavRouted: " & $g_bExternalWavRouted & @CRLF)
+
+SplashTextOn("Be patient", "MXF-Track-Swap will be prepared ...", 300, 50)
+If Not FileExists(@TempDir & "\ffmpeg.exe") Then
+	FileInstall('K:\ffmpeg\bin\ffmpeg.exe', @TempDir & "\ffmpeg.exe", $FC_OVERWRITE)
+EndIf
+SplashOff()
+
+Local $sPathFFmpeg = @TempDir & "\"
+Global $g_hTimerStart
+Global $g_sStdErrAll
+
+_ReWrap()
+ShellExecute(@TempDir)
+
+Exit
+
+;~ #cs
+#Region Funcs
+Func _CheckForInputFiles($aFiles)
+;~ 	_ArrayDisplay($aFiles)
+	Local $bFoundMXF = False, $bFoundWAV = False
+	Local $sDrive, $sDir, $sFileName, $sExtension
+	For $i = 1 To $aFiles[0]
+		_PathSplit($aFiles[$i], $sDrive, $sDir, $sFileName, $sExtension)
+		; ignore folder
+		If $sExtension = "" Then ContinueLoop
+		; only look for mxf or wav
+		Switch StringLower($sExtension)
+			Case ".mxf"
+				If Not $bFoundMXF Then
+					If FileExists($aFiles[$i]) Then
+						$g_sMXFFile = $aFiles[$i]
+						$g_bMxfAvailable = True
+						$bFoundMXF = True
+					EndIf
+				EndIf
+			Case ".wav"
+				If Not $bFoundWAV Then
+					If FileExists($aFiles[$i]) Then
+						$g_sWAVFile = $aFiles[$i]
+						$g_bWavAvailable = True
+						$bFoundWAV = True
+					EndIf
+				EndIf
+		EndSwitch
+		If $bFoundMXF = True And $bFoundWAV = True Then ExitLoop
+	Next
+
+EndFunc
+
+
+Func _ReWrap()
+	$g_hTimerStart = TimerInit()
+	GUIDelete($g_hGUI)
+	$g_hGUI = GUICreate("MXF-Track-Swap Muxing", 600, 160)
+	GUICtrlCreateLabel("MXF-File: " & _FileName($g_sMXFFile), 10, 10, 580, 30)
+	GUICtrlSetFont(-1, 14, 400, 0, "Courier New")
+	GUICtrlCreateLabel("Rewrapping:", 10, 50, 580, 30)
+	GUICtrlSetFont(-1, 12, 400, 0, "Courier New")
+	Global $Progress1 = GUICtrlCreateProgress(10, 80, 580, 20)
+	Global $Edit = GUICtrlCreateLabel("", 10, 120, 260, 30)
+	GUICtrlSetFont(-1, 14, 400, 0, "Courier New")
+	Global $g_hLabelRunningTime = GUICtrlCreateLabel("", 440, 120, 150, 30, $SS_RIGHT)
+	GUICtrlSetFont(-1, 14, 400, 0, "Courier New")
+	GUISetState(@SW_SHOW)
+
+	;~ Code zum Remuxen: Video erhalten, Audio: 1>5, 2>6, 3>3, 4>4, 5 mute, 6 mute, 7>L, 8>R
+	;~ ffmpeg -i Video.mxf  -f lavfi -i anullsrc=r=48000:cl=mono -i Stereo.wav -ar 48000 -filter_complex "[2:a]apad,channelsplit=channel_layout=stereo[L][R]" -map 0:0 -map 0:5 -map 0:6 -map 0:3 -map 0:4 -map 1:0 -map 1:0 -map "[L]" -map "[R]" -c:v copy -c:a pcm_s24le -shortest -y Video_swapped.mxf
+	Local $sCommand
+	; video file
+	$sCommand = '-i "' & $g_sMXFFile & '"'
+	; muted source
+	If $g_bMuteRouted Then
+		$sCommand &= ' -f lavfi -i anullsrc=r=48000:cl=mono'
+	EndIf
+	; external wav file
+	If $g_bExternalWavRouted Then
+		$sCommand &= ' -i "' & $g_sWAVFile & '" -ar 48000 -filter_complex "['
+		If Not $g_bMuteRouted Then
+			$sCommand &= '1'
+		Else
+			$sCommand &= '2'
+		EndIf
+		$sCommand &= ':a]apad,channelsplit=channel_layout=stereo[L][R]"'
+	EndIf
+	; video mapping
+	$sCommand &= ' -map 0:0'
+	; audio mapping
+	For $i = 1 To UBound($g_aRouting) -1
+		$sCommand &= ' -map ' & $g_aRouting[$i]
+	Next
+	; copy video, set audio to 24 bit, use shortest file (always the mxf file) as length, overwrite existing file
+	$sCommand &= ' -c:v copy -c:a pcm_s24le -shortest -y'
+	; output file
+	Local $sSuffix
+	For $i = 1 To UBound($g_aRouting) -1
+		$sSuffix &= '_' & $i & '-' & StringRegExpReplace(StringRegExpReplace($g_aRouting[$i], "\d:", ""), '[\[\]"]', "")
+	Next
+	$sSuffix &= '.mxf'
+	$sCommand &= ' "' & @TempDir & '\' & _StripFileExtension(_FileName($g_sMXFFile)) & $sSuffix
+	ConsoleWrite("$command: " & $sCommand & @CRLF)
+	_runFFmpeg('ffmpeg ' & $sCommand, $sPathFFmpeg, 1)
+	GUICtrlSetData($Edit, "Ready")
+	WinSetOnTop($g_hGUI, "", $WINDOWS_ONTOP)
+
+EndFunc
+
+Func _runFFmpeg($command, $wd, $iProgress)
+	Local $hPid = Run('"' & @ComSpec & '" /c ' & $command, $wd, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD)
+	Local $sStdErr, $sTimer
+	Local $iTicksDuration = 0, $iTicksTime = 0, $iTimer
+	While 1
+		Sleep(500)
+		$sStdErr = StderrRead($hPid)
+		If @error Then ExitLoop
+		$g_sStdErrAll &= $sStdErr
+		If StringLen($sStdErr) > 0 Then
+			If Not $iTicksDuration Then $iTicksDuration = _GetDuration($sStdErr)
+			$iTicksTime = _GetTime($sStdErr)
+			If Not @error Then $sStdErr = ""
+			Switch $iProgress
+				Case 1
+					GUICtrlSetData($Progress1, $iTicksTime * 100 / $iTicksDuration)
+			EndSwitch
+		EndIf
+		$iTimer = TimerDiff($g_hTimerStart)
+		$sTimer = _Zeit($iTimer)
+		If GUICtrlRead($g_hLabelRunningTime) <> $sTimer Then
+			GUICtrlSetData($g_hLabelRunningTime, $sTimer)
+		EndIf
+	WEnd
+EndFunc
+
+Func _GetDuration($sStdErr)
+    If Not StringInStr($sStdErr, "Duration:") Then Return SetError(1, 0, 0)
+    Local $aRegExp = StringRegExp($sStdErr, "(?i)Duration.+?([0-9:]+)", 3)
+    If @error Or Not IsArray($aRegExp) Then Return SetError(2, 0, 0)
+    Local $sTime = $aRegExp[0]
+    Local $aTime = StringSplit($sTime, ":", 2)
+    If @error Or Not IsArray($aTime) Then Return SetError(3, 0, 0)
+    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
+EndFunc   ;==>_GetDuration
+
+Func _GetTime($sStdErr)
+    If Not StringInStr($sStdErr, "time=") Then Return SetError(1, 0, 0)
+    Local $aRegExp = StringRegExp($sStdErr, "(?i)time.+?([0-9:]+)", 3)
+    If @error Or Not IsArray($aRegExp) Then Return SetError(2, 0, 0)
+    Local $sTime = $aRegExp[UBound($aRegExp) - 1]
+    Local $aTime = StringSplit($sTime, ":", 2)
+    If @error Or Not IsArray($aTime) Then Return SetError(3, 0, 0)
+    Return _TimeToTicks($aTime[0], $aTime[1], $aTime[2])
+EndFunc   ;==>_GetTime
+
+Func _FileName($sFullPath)
+	Local $iDelimiter = StringInStr($sFullPath, "\", 0, -1)
+	Return StringTrimLeft($sFullPath, $iDelimiter)
+EndFunc
+
+Func _StripFileExtension($sFile)
+	Local $iDelimiter = StringInStr($sFile, ".", 0, -1)
+	Return StringLeft($sFile, $iDelimiter - 1)
+EndFunc
+
+Func _Zeit($iMs, $bComfortView = True) ; from ms to a format: "12h 36m 56s 13f" (with special space between - ChrW(8239))
+	Local $sReturn
+	$iMs = Int($iMs)
+	Local $iFrames, $iMSec, $iSec, $iMin, $iHour, $sSign
+	If $iMs < 0 Then
+		$iMs = Abs($iMs)
+		$sSign = '-'
+	EndIf
+	$iMSec = StringRight($iMs, 3)
+	$iFrames = $iMSec / 40
+	$iSec = $iMs / 1000
+	$iMin = $iSec / 60
+	$iHour = $iMin / 60
+	$iMin -= Int($iHour) * 60
+	$iSec -= Int($iMin) * 60
+	If $bComfortView Then ; no hours if not present and no frames
+		If Not Int($iHour) = 0 Then $sReturn &= StringRight('0' & Int($iHour), 2) & 'h' & ChrW(8239)
+		$sReturn &= StringRight('0' & Int($iMin), 2) & 'm' & ChrW(8239)
+		If Int($iHour) = 0 Then $sReturn &= StringRight('0' & Int($iSec), 2) & 's' ; zum DEBUGGING auskommentieren
+	Else
+		$sReturn = $sSign & StringRight('0' & Int($iHour), 2) & 'h' & ChrW(8239) & StringRight('0' & Int($iMin), 2) & 'm' & ChrW(8239) & StringRight('0' & Int($iSec), 2) & 's' & ChrW(8239) & StringRight('0' & Int($iFrames), 2) & 'f'
+	EndIf
+	Return $sReturn
+EndFunc   ;==>_Zeit
+
+Func WM_DROPFILES_FUNC($hWnd, $msgID, $wParam, $lParam)
+	If $bPaused Then Return
+	#forceref $hWnd, $msgID, $wParam, $lParam
+    Local $nSize, $pFileName
+    Local $nAmt = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', 0xFFFFFFFF, 'ptr', 0, 'int', 0)
+    ReDim $g_aDropFiles[$nAmt[0]]
+    For $i = 0 To $nAmt[0] - 1
+        $nSize = DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', 0, 'int', 0)
+        $nSize = $nSize[0] + 1
+        $pFileName = DllStructCreate('wchar[' & $nSize & ']')
+        DllCall('shell32.dll', 'int', 'DragQueryFileW', 'hwnd', $wParam, 'int', $i, 'ptr', DllStructGetPtr($pFileName), 'int', $nSize)
+        $g_aDropFiles[$i] = DllStructGetData($pFileName, 1)
+        $pFileName = 0
+    Next
+	_ArrayInsert($g_aDropFiles, 0, UBound($g_aDropFiles))
+    GUICtrlSendToDummy($FILES_DROPPED, $nAmt[0])
+EndFunc   ;==>WM_DROPFILES_FUNC
+#EndRegion
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..28794e7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,49 @@
+# mxf-track-swap
+
+Provide a mxf (tested only with xdcam hd 422 op1a including 8 audio tracks) and create a new one where you can swap the audio tracks. You can provide a stereo audio file too, to embed it into the new mxf.
+
+## Prerequisites
+
+To build your swapper yourself you need a compiled ffmpeg that must be embedded into your swapper. Customize the following code line:
+
+`FileInstall('K:\ffmpeg\bin\ffmpeg.exe', @TempDir & "\ffmpeg.exe", $FC_OVERWRITE)`
+
+## Manual
+
+Start the app and drag and drop a mxf file onto the gui. You can drag and drop an audio stereo file too.
+
+![Screenshot of the drag and drop gui](images/MXF-Track-Swap_drop-files.png)
+
+After pushing the "Next" button you have to do your routing.
+
+![Screenshot of the routing gui](images/MXF-Track-Swap_routing.png)
+
+The tracks of the source are provided on the left side, the tracks of the target on the bottom. Click the radios for setting the cross points.
+
+As we mostly use this tool for distributing audio descriptions for severeal use cases there are 3 preset buttons you can use too.
+
+- button `1+2 <-> 5+6`: swap tracks 1 and 2 with 5 and 6
+- button `ext. AD > 5+6`: embed an external audio description in tracks 5 and 6
+- button `ext. AD > 1+2`: embed an external audio description in tracks 1 and 2
+
+When you are ready with the routing push the button "Swap". A gui will show the progress of the swapping.
+
+![Screenshot of the progress gui](images/MXF-Track-Swap_muxing.png)
+
+The new mxf file will be created in `%temp%` folder. This folder will be opened automatically. The file naming is made with this rules:
+
+- video file name_
+- 1-routed source track_
+- 2-routed source track_
+- 3-routed source track_
+- 4-routed source track_
+- 5-routed source track_
+- 6-routed source track_
+- 7-routed source track_
+- 8-routed source track
+- .mxf
+
+The routing example in the image above would be named `Spurkennung_1-5_2-6_3-3_4-4_5-L_6-R_7-8_8-7.mxf`.
+
+## Known issues
+If you use only one track ot the external stereo wav file (e.g. "[R]") it breaks: "Filter channelsplit:FL has an unconnected outut".
diff --git a/icon/swap.ico b/icon/swap.ico
new file mode 100644
index 0000000000000000000000000000000000000000..a64df47dbe68e129af1d65a247f828180097b6e7
GIT binary patch
literal 4211
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
Q*B=IxE0zXLdLBvt1z<(j6951J

literal 0
HcmV?d00001

diff --git a/images/MXF-Track-Swap_drop-files.png b/images/MXF-Track-Swap_drop-files.png
new file mode 100644
index 0000000000000000000000000000000000000000..a526adf9eca5e634b2e05e6801f72472e15a9229
GIT binary patch
literal 6671
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

literal 0
HcmV?d00001

diff --git a/images/MXF-Track-Swap_muxing.png b/images/MXF-Track-Swap_muxing.png
new file mode 100644
index 0000000000000000000000000000000000000000..670d9bad2e63d0e912ce72cb2e2dfd6f85366bdf
GIT binary patch
literal 8427
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
CY>KV`

literal 0
HcmV?d00001

diff --git a/images/MXF-Track-Swap_routing.png b/images/MXF-Track-Swap_routing.png
new file mode 100644
index 0000000000000000000000000000000000000000..6197b87634793db7c3df979e32a8c2053908780c
GIT binary patch
literal 7914
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
Pi|Ai8zEFJr#_j(A&|w>H

literal 0
HcmV?d00001

-- 
GitLab