Port metadata is all that extra information that RouteEffect layers on top of your Videohub. This includes short labels, icons, badges, colors, and notes for your input sources and output destinations.
RouteEffect allows you to export your port metadata from simulated and real Videohubs and transfer them to other Videohub instances.
This will place a JSON file in your clipboard that has all the metadata for your inputs and outputs. A sample file looks like this for an ATEM Mini Pro:
Copy {"colorChoiceRaw":"green","colorHex":"30D158","isHidden":false,"label":"Webcam Out","portIndex":1,"portTypeRaw":"output","shortLabel":"Web cam"}
{"colorChoiceRaw":"purple","colorHex":"BF5AF2","isHidden":false,"label":"Program","notes":"Red","portIndex":2,"portTypeRaw":"output","shortLabel":"PGM"}
{"colorChoiceRaw":"red","colorHex":"FF453A","icon":"rectangle.inset.filled","isHidden":false,"label":"Program","portIndex":11,"portTypeRaw":"input","shortLabel":"PGM"}
{"colorChoiceRaw":"red","colorHex":"FF453A","icon":"point.topright.filled.arrow.triangle.backward.to.point.bottomleft.scurvepath","isHidden":false,"label":"VideoHub Direct","portIndex":13,"portTypeRaw":"input","shortLabel":"DIRECT"}
{"colorChoiceRaw":"blue","colorHex":"0A84FF","isHidden":false,"label":"Output","portIndex":0,"portTypeRaw":"output","shortLabel":"OUT"}
{"colorChoiceRaw":"green","colorHex":"30D158","icon":"camera.fill","isHidden":false,"label":"5D Mark IV","portIndex":3,"portTypeRaw":"input","shortLabel":"5D4"}
{"colorChoiceRaw":"green","colorHex":"30D158","icon":"rectangle.inset.filled","isHidden":false,"label":"Preview","portIndex":12,"portTypeRaw":"input","shortLabel":"PRV"}
{"colorChoiceRaw":"purple","colorHex":"BF5AF2","icon":"rectangle.split.3x3.fill","isHidden":false,"label":"Multi View","portIndex":10,"portTypeRaw":"input","shortLabel":"MV"}
{"colorChoiceRaw":"purple","colorHex":"BF5AF2","icon":"mediastick","iconBadge":"2","isHidden":false,"label":"Media Player 1 Key","portIndex":9,"portTypeRaw":"input","shortLabel":"MP2"}
{"colorChoiceRaw":"orange","colorHex":"FF9F0A","icon":"mediastick","iconBadge":"1","isHidden":false,"label":"Media Player 1","portIndex":8,"portTypeRaw":"input","shortLabel":"MP1"}
{"colorChoiceRaw":"yellow","colorHex":"FFD60A","icon":"rectangle.fill","iconBadge":"2","isHidden":false,"label":"Color 2","portIndex":7,"portTypeRaw":"input","shortLabel":"COL2"}
{"colorChoiceRaw":"green","colorHex":"30D158","icon":"circle.fill","iconBadge":"1","isHidden":false,"label":"Color 1","portIndex":6,"portTypeRaw":"input","shortLabel":"COL1"}
{"colorChoiceRaw":"red","colorHex":"FF453A","icon":"barcode","isHidden":false,"label":"Color Bars","portIndex":5,"portTypeRaw":"input","shortLabel":"BARS"}
{"colorChoiceRaw":"blue","colorHex":"0A84FF","icon":"ipad.homebutton","isHidden":false,"label":"iPad","portIndex":4,"portTypeRaw":"input","shortLabel":"iPad"}
{"colorChoiceRaw":"red","colorHex":"FF453A","icon":"keyboard.fill","isHidden":false,"label":"ATEM","portIndex":2,"portTypeRaw":"input","shortLabel":"ATEM"}
{"colorChoiceRaw":"custom","colorHex":"00FFFF","icon":"server.rack","isHidden":false,"label":"VideoHub","portIndex":1,"portTypeRaw":"input","shortLabel":"VHUB"}
{"colorChoiceRaw":"custom","colorHex":"BF5AF2","icon":"rectangle.fill","isHidden":true,"label":"Black","portIndex":0,"portTypeRaw":"input","shortLabel":"BLK"}
{"colorChoiceRaw":"purple","colorHex":"BF5AF2","isHidden":false,"label":"Preview","portIndex":3,"portTypeRaw":"output","shortLabel":"PRV"}
{"isHidden":false,"label":"Output 20","portIndex":19,"portTypeRaw":"output"}
{"isHidden":false,"portIndex":-1,"portTypeRaw":"input"}
{"isHidden":false,"label":"Output 19","portIndex":18,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 18","portIndex":17,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 17","portIndex":16,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 16","portIndex":15,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 15","portIndex":14,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 14","portIndex":13,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 13","portIndex":12,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 12","portIndex":11,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 11","portIndex":10,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 10","portIndex":9,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 9","portIndex":8,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 8","portIndex":7,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 7","portIndex":6,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 6","portIndex":5,"portTypeRaw":"output"}
{"isHidden":false,"label":"Output 5","portIndex":4,"portTypeRaw":"output"}
Now the simulated ATEM Mini Pro's inputs and outputs match the physical ATEM Mini Pro's look and feel in RouteEffect. Here are before and after shots: