Skip to content

Instantly share code, notes, and snippets.

@julianoes
Created December 11, 2019 09:00
Show Gist options
  • Save julianoes/c8cfff19b4df49fbd7d3a217dcb6fc5f to your computer and use it in GitHub Desktop.
Save julianoes/c8cfff19b4df49fbd7d3a217dcb6fc5f to your computer and use it in GitHub Desktop.
Example to use libz to compress camera definition file
<?xml version="1.0" encoding="UTF-8" ?>
<mavlinkcamera>
<definition version="20">
<model>E90</model>
<vendor>Yuneec</vendor>
</definition>
<parameters>
<!-- control = 0 tells us this should not create an automatic UI control -->
<parameter name="CAM_MODE" type="uint32" default="1" control="0">
<description>Camera Mode</description>
<!-- This tells us when this parameter changes, these parameters must be updated (requested)-->
<updates>
<update>CAM_SHUTTERSPD</update>
<update>CAM_ISO</update>
<update>CAM_VIDRES</update>
<update>CAM_ASPECTRATIO</update>
<update>CAM_PHOTORATIO</update>
</updates>
<options>
<option name="Photo" value="0">
<!-- This tells us when Camera Mode is set to Photo mode, the following parameters should be ignored (hidden from UI or disabled)-->
<exclusions>
<exclude>CAM_VIDRES</exclude>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
</option>
<option name="Video" value="1">
<!-- Converselly, when Camera Mode is set to Photo mode, the following parameters should be ignored (hidden from UI or disabled)-->
<exclusions>
<exclude>CAM_PHOTOFMT</exclude>
<exclude>CAM_PHOTOQUAL</exclude>
<exclude>CAM_PHOTORATIO</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_ISO" condition="CAM_EXPMODE=1">
<roption name="100" value="100" />
<roption name="150" value="150" />
<roption name="200" value="200" />
<roption name="300" value="300" />
<roption name="400" value="400" />
<roption name="600" value="600" />
<roption name="800" value="800" />
<roption name="1600" value="1600" />
<roption name="3200" value="3200" />
</parameterrange>
</parameterranges>
</option>
</options>
</parameter>
<parameter name="CAM_WBMODE" type="uint32" default="0">
<description>White Balance Mode</description>
<options>
<option name="Auto" value="0" />
<option name="Incandescent" value="1" />
<option name="Sunrise" value="2" />
<option name="Sunset" value="3" />
<option name="Sunny" value="4" />
<option name="Cloudy" value="5" />
<option name="Fluorescent" value="7" />
<option name="Lock" value="99" />
</options>
</parameter>
<parameter name="CAM_CUSTOMWB" type="uint16" min="3000" max="8000" default="5500" control="0">
<description>Custom White Balance (K)</description>
</parameter>
<parameter name="CAM_EXPMODE" type="uint32" default="0">
<description>Exposure Mode</description>
<updates>
<update>CAM_SHUTTERSPD</update>
<update>CAM_ISO</update>
</updates>
<options default="0">
<option name="Auto" value="0">
<exclusions>
<exclude>CAM_ISO</exclude>
<exclude>CAM_SHUTTERSPD</exclude>
</exclusions>
</option>
<option name="Manual" value="1">
<exclusions>
<exclude>CAM_EV</exclude>
<exclude>CAM_METERING</exclude>
</exclusions>
</option>
</options>
</parameter>
<parameter name="CAM_SHUTTERSPD" type="float" default="0.016666">
<description>Shutter Speed</description>
<options>
<option name="4" value="4" />
<option name="3" value="3" />
<option name="2" value="2" />
<option name="1" value="1" />
<option name="1/25" value="0.04" />
<option name="1/30" value="0.033333" />
<option name="1/50" value="0.02" />
<option name="1/60" value="0.016666" />
<option name="1/100" value="0.01" />
<option name="1/125" value="0.008" />
<option name="1/200" value="0.005" />
<option name="1/250" value="0.004" />
<option name="1/400" value="0.0025" />
<option name="1/480" value="0.002083333" />
<option name="1/500" value="0.002" />
<option name="1/1000" value="0.001" />
<option name="1/2000" value="0.0005" />
<option name="1/4000" value="0.00025" />
<option name="1/8000" value="0.000125" />
</options>
</parameter>
<parameter name="CAM_ISO" type="uint32" default="100">
<description>ISO</description>
<options>
<option name="100" value="100" />
<option name="150" value="150" />
<option name="200" value="200" />
<option name="300" value="300" />
<option name="400" value="400" />
<option name="600" value="600" />
<option name="800" value="800" />
<option name="1600" value="1600" />
<option name="3200" value="3200" />
<option name="6400" value="6400" />
</options>
</parameter>
<parameter name="CAM_EV" type="float" default="0">
<description>Exposure Compensation</description>
<options>
<option name="-3" value="-3" />
<option name="-2.5" value="-2.5" />
<option name="-2" value="-2" />
<option name="-1.5" value="-1.5" />
<option name="-1" value="-1" />
<option name="-0.5" value="-0.5" />
<option name="0" value="0" />
<option name="+0.5" value="0.5" />
<option name="+1" value="1" />
<option name="+1.5" value="1.5" />
<option name="+2" value="2" />
<option name="+2.5" value="2.5" />
<option name="+3" value="3" />
</options>
</parameter>
<parameter name="CAM_VIDRES" type="uint32" default="0">
<description>Video Resolution</description>
<updates>
<update>CAM_SHUTTERSPD</update>
<update>CAM_ISO</update>
<update>CAM_ASPECTRATIO</update>
</updates>
<options>
<!-- 4096 x 2160 -->
<option name="4096 x 2160 60fps (UHD)" value="0">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<!-- When Camera Mode is Video and Exposure Mode is Manual, Shutter Speed cannot be slower than the frame rate -->
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="4096 x 2160 50fps (UHD)" value="1">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="4096 x 2160 48fps (UHD)" value="2">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="4096 x 2160 30fps (UHD)" value="3">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="4096 x 2160 25fps (UHD)" value="4">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="4096 x 2160 24fps (UHD)" value="5">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<!-- 3840 x 2160 -->
<option name="3840 x 2160 60fps (UHD)" value="6">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="3840 x 2160 50fps (UHD)" value="7">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="3840 x 2160 48fps (UHD)" value="8">
<exclusions>
<exclude>CAM_VIDFMT</exclude>
</exclusions>
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="3840 x 2160 30fps (UHD)" value="9">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="3840 x 2160 25fps (UHD)" value="10">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="3840 x 2160 24fps (UHD)" value="11">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<!-- 2720 x 1530 -->
<option name="2720 x 1530 60fps (UHD)" value="12">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="2720 x 1530 50fps (UHD)" value="13">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="2720 x 1530 48fps (UHD)" value="14">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="2720 x 1530 30fps (UHD)" value="15">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="2720 x 1530 25fps (UHD)" value="16">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="2720 x 1530 24fps (UHD)" value="17">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<!-- 1920 x 1080 -->
<option name="1920 x 1080 120fps (FHD)" value="18">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 60fps (FHD)" value="19">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 50fps (FHD)" value="20">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 48fps (FHD)" value="21">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 30fps (FHD)" value="22">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 25fps (FHD)" value="23">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1920 x 1080 24fps (FHD)" value="24">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<!-- 1280 x 720 -->
<option name="1280 x 720 120fps (HD)" value="25">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 60fps (HD)" value="26">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 50fps (HD)" value="27">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 48fps (HD)" value="28">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 30fps (HD)" value="29">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 25fps (HD)" value="30">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
<option name="1280 x 720 24fps (HD)" value="31">
<parameterranges>
<parameterrange parameter="CAM_SHUTTERSPD" condition="CAM_MODE=1 AND CAM_EXPMODE=1">
<roption name="1/25" value="0.04" />
<roption name="1/30" value="0.033333" />
<roption name="1/50" value="0.02" />
<roption name="1/60" value="0.016666" />
<roption name="1/100" value="0.01" />
<roption name="1/125" value="0.008" />
<roption name="1/200" value="0.005" />
<roption name="1/250" value="0.004" />
<roption name="1/400" value="0.0025" />
<roption name="1/480" value="0.002083333" />
<roption name="1/500" value="0.002" />
<roption name="1/1000" value="0.001" />
<roption name="1/2000" value="0.0005" />
<roption name="1/4000" value="0.00025" />
<roption name="1/8000" value="0.000125" />
</parameterrange>
</parameterranges>
</option>
</options>
</parameter>
<parameter name="CAM_VIDFMT" type="uint32" default="1">
<description>Video Format</description>
<updates>
<update>CAM_SHUTTERSPD</update>
<update>CAM_ISO</update>
<update>CAM_VIDRES</update>
</updates>
<options>
<option name="h.264" value="1" />
<option name="HEVC" value="3">
<parameterranges>
<!-- When Mode is HEVC, 4K res limit is 30fps -->
<parameterrange parameter="CAM_VIDRES" condition="CAM_MODE=1">
<roption name="4096 x 2160 30fps (UHD)" value="3" />
<roption name="4096 x 2160 25fps (UHD)" value="4" />
<roption name="4096 x 2160 24fps (UHD)" value="5" />
<roption name="3840 x 2160 30fps (UHD)" value="9" />
<roption name="3840 x 2160 25fps (UHD)" value="10" />
<roption name="3840 x 2160 24fps (UHD)" value="11" />
<roption name="2720 x 1530 60fps (UHD)" value="12" />
<roption name="2720 x 1530 50fps (UHD)" value="13" />
<roption name="2720 x 1530 48fps (UHD)" value="14" />
<roption name="2720 x 1530 30fps (UHD)" value="15" />
<roption name="2720 x 1530 25fps (UHD)" value="16" />
<roption name="2720 x 1530 24fps (UHD)" value="17" />
<roption name="1920 x 1080 120fps (FHD)" value="18" />
<roption name="1920 x 1080 60fps (FHD)" value="19" />
<roption name="1920 x 1080 50fps (FHD)" value="20" />
<roption name="1920 x 1080 48fps (FHD)" value="21" />
<roption name="1920 x 1080 30fps (FHD)" value="22" />
<roption name="1920 x 1080 25fps (FHD)" value="23" />
<roption name="1920 x 1080 24fps (FHD)" value="24" />
<roption name="1280 x 720 120fps (HD)" value="25" />
<roption name="1280 x 720 60fps (HD)" value="26" />
<roption name="1280 x 720 50fps (HD)" value="27" />
<roption name="1280 x 720 48fps (HD)" value="28" />
<roption name="1280 x 720 30fps (HD)" value="29" />
<roption name="1280 x 720 25fps (HD)" value="30" />
<roption name="1280 x 720 24fps (HD)" value="31" />
</parameterrange>
</parameterranges>
</option>
</options>
</parameter>
<parameter name="CAM_PHOTORATIO" type="uint8" default="1">
<description>Photo Aspect Ratio</description>
<updates>
<update>CAM_ASPECTRATIO</update>
</updates>
<options>
<option name="3:2" value="1" />
<option name="4:3" value="2" />
<option name="16:9" value="3" />
</options>
</parameter>
<parameter name="CAM_METERING" type="uint32" default="0">
<description>Metering Mode</description>
<options>
<option name="Average" value="1" />
<option name="Center" value="0" />
<option name="Spot" value="2" />
</options>
</parameter>
<parameter name="CAM_COLORMODE" type="uint32" default="1">
<description>Color Mode</description>
<options>
<option name="Neutral" value="0" />
<option name="Enhanced" value="1" />
<option name="Night" value="3" />
<option name="Vivid" value="5" />
<option name="Unprocessed" value="2" />
</options>
</parameter>
<!--
DataPilot does not use this
-->
<parameter name="CAM_FLICKER" type="uint32" default="0" control="0">
<description>Flickering Mode</description>
<options>
<option name="Auto" value="0" />
<option name="60Hz" value="1" />
<option name="50Hz" value="2" />
</options>
</parameter>
<parameter name="CAM_PHOTOFMT" type="uint32" default="0">
<description>Image Format</description>
<options>
<option name="Jpeg" value="0" />
<option name="Jpeg+DNG" value="2" />
</options>
</parameter>
<parameter name="CAM_PHOTOQUAL" type="uint32" default="1">
<description>Image Quality</description>
<options>
<option name="Low" value="0" />
<option name="Medium" value="1" />
<option name="High" value="2" />
<option name="Ultra" value="3" />
</options>
</parameter>
<parameter name="CAM_IMAGEDEWARP" type="uint8" default="0">
<description>Distortion Correction</description>
<options>
<option name="Off" value="0" />
<option name="On" value="1" />
</options>
</parameter>
<!--
DataPilot does not use this
-->
<parameter name="CAM_COLORENCODE" type="uint32" default="0" control="0">
<description>Color Encoding System</description>
<options>
<option name="NTSC" value="0" />
<option name="PAL" value="1" />
</options>
</parameter>
<!--
Spot Metering Area
Encoded as 2 uint8 values
x = (value >> 8) & 0xFF
y = value & 0xFF
x is x_coord / screen_witdh * 100
y is y_coord / screen_height * 100
-->
<parameter name="CAM_SPOTAREA" type="uint16" control="0" default="0">
<description>Spot Metering Area</description>
</parameter>
<!--
Video stream aspect ratio
Float value is width / height (i.e. 3:2 = 1.5)
-->
<parameter name="CAM_ASPECTRATIO" type="float" control="0" readonly="1" default="01.777777">
<description>Video Stream Aspect Ratio</description>
</parameter>
<parameter name="CAM_WIFIPASSWD" type="string" control="0" writeonly="1" default="">
<description>Set WiFi Password</description>
</parameter>
<parameter name="CAM_SYSTEMTIME" type="uint64" control="0" writeonly="1">
<description>Set System Time</description>
</parameter>
<!--
These parameters are not used by DataPilot
-->
<parameter name="CAM_PHOTOMODE" type="custom" control="0">
<description>Camera Photo Mode</description>
</parameter>
<parameter name="CAM_FWBUNDLEVER" type="custom" control="0" readonly="1">
<description>Firmware Bundle Version</description>
</parameter>
<parameter name="CAM_ZOOM" type="uint32" control="0">
<description>Camera Zoom</description>
</parameter>
<parameter name="CAM_FILENUMOPT" type="uint8" default="0">
<description>File Numbering Option</description>
<options>
<option name="Auto Reset" value="0" />
<option name="Sequential" value="1" />
</options>
</parameter>
</parameters>
<localization>
<!-- If no appropriate locale is found, the original (above) will be used -->
<!-- At runtime, the code will go through every "description" and "option name" looking for "original" and replace it with "translated" -->
<locale name="de_DE">
<strings original="Camera Mode" translated="Kamera Modus" />
<strings original="Photo" translated="Foto" />
<strings original="Video" translated="Video" />
<strings original="White Balance Mode" translated="Weißabgleich Modus" />
<strings original="Auto" translated="Auto" />
<strings original="Incandescent" translated="Glühlampen" />
<strings original="Sunset" translated="Sonnenuntergang" />
<strings original="Sunny" translated="Sonnig" />
<strings original="Cloudy" translated="Bewölkt" />
<strings original="Fluorescent" translated="Fluoreszierende" />
<strings original="Lock" translated="Sperre" />
<strings original="Exposure Mode" translated="Belichtungsmodus" />
<strings original="Manual" translated="Manuell" />
<strings original="Shutter Speed" translated="Verschlusszeit" />
<strings original="Exposure Compensation" translated="Belichtungskorrektur" />
<strings original="Video Resolution" translated="Videoauflösung" />
<strings original="Video Format" translated="Video-Format" />
<strings original="Metering Mode" translated="Messmodus" />
<strings original="Average" translated="Durchschnitt" />
<strings original="Center" translated="Zentrum" />
<strings original="Spot" translated="Punkt" />
<strings original="Color Mode" translated="Farbmodus" />
<strings original="Neutral" translated="Neutral" />
<strings original="Enhanced" translated="Verbessert" />
<strings original="Night" translated="Nacht" />
<strings original="Unprocessed" translated="Unverarbeitete" />
<strings original="Flickering Mode" translated="Flackernde Modus" />
<strings original="Image Format" translated="Bildformat" />
<strings original="Image Quality" translated="Bildqualität" />
<strings original="Low" translated="Low" />
<strings original="Medium" translated="Medium" />
<strings original="High" translated="Hoch" />
<strings original="Ultra" translated="Ultra" />
<strings original="Spot Metering Area" translated="Spotmessung Bereich" />
<strings original="Video Stream Aspect Ratio" translated="Seitenverhältnis der Video-Stream" />
</locale>
<locale name="zh_CN">
<strings original="Camera Mode" translated="相机型号" />
<strings original="Photo" translated="照片" />
<strings original="Video" translated="视频" />
<strings original="White Balance Mode" translated="白平衡" />
<strings original="Auto" translated="自动" />
<strings original="Incandescent" translated="白炽灯" />
<strings original="Sunrise" translated="日出" />
<strings original="Sunset" translated="日落" />
<strings original="Sunny" translated="日光" />
<strings original="Cloudy" translated="多云" />
<strings original="Fluorescent" translated="荧光灯" />
<strings original="Lock" translated="锁定" />
<strings original="Custom" translated="自定义" />
<strings original="Exposure Mode" translated="曝光模式" />
<strings original="Manual" translated="手动" />
<strings original="Shutter Speed" translated="快门速度" />
<strings original="Exposure Compensation" translated="曝光补偿" />
<strings original="Video Resolution" translated="视频分辨率" />
<strings original="Video Format" translated="视频格式" />
<strings original="Metering Mode" translated="测光模式" />
<strings original="Average" translated="平均测光" />
<strings original="Center" translated="中心测光" />
<strings original="Spot" translated="点测光" />
<strings original="Color Mode" translated="色调" />
<strings original="Neutral" translated="自然" />
<strings original="Enhanced" translated="增强" />
<strings original="Night" translated="夜间" />
<strings original="Unprocessed" translated="原始" />
<strings original="Flickering Mode" translated="抗闪烁" />
<strings original="Image Format" translated="图片格式" />
<strings original="Image Quality" translated="像素" />
<strings original="Low" translated="低" />
<strings original="Medium" translated="正常" />
<strings original="High" translated="高清" />
<strings original="Ultra" translated="超清" />
<strings original="Spot Metering Area" translated="点测光区域" />
<strings original="Video Stream Aspect Ratio" translated="视频长宽比" />
</locale>
<locale name="fr_FR">
<strings original="Camera Mode" translated="Mode de la caméra" />
<strings original="Photo" translated="Photo" />
<strings original="Video" translated="Vidéo" />
<strings original="White Balance Mode" translated="Mode Balance des blancs" />
<strings original="Auto" translated="Auto" />
<strings original="Incandescent" translated="Incandescent" />
<strings original="Sunset" translated="Coucher de soleil" />
<strings original="Sunny" translated="Ensoleillé" />
<strings original="Cloudy" translated="Nuageux" />
<strings original="Fluorescent" translated="Fluorescent" />
<strings original="Lock" translated="Verrouiller" />
<strings original="Exposure Mode" translated="Mode d’exposition" />
<strings original="Manual" translated="Manuel" />
<strings original="Shutter Speed" translated="Vitesse d’obturation" />
<strings original="Exposure Compensation" translated="Compensation d’exposition" />
<strings original="Video Resolution" translated="Résolution vidéo" />
<strings original="Video Format" translated="Format vidéo" />
<strings original="Metering Mode" translated="Mode de Mesure" />
<strings original="Average" translated="Moyenne" />
<strings original="Center" translated="Centré" />
<strings original="Spot" translated="Spot" />
<strings original="Color Mode" translated="Mode couleur" />
<strings original="Neutral" translated="Neutre" />
<strings original="Enhanced" translated="Renforcé" />
<strings original="Night" translated="Nuit" />
<strings original="Unprocessed" translated="Non traité" />
<strings original="Flickering Mode" translated="Mode scintillement" />
<strings original="60Hz" translated="60Hz" />
<strings original="50Hz" translated="50Hz" />
<strings original="Image Format" translated="Format de l'image" />
<strings original="Image Quality" translated="Qualité d’image" />
<strings original="Low" translated="Faible" />
<strings original="Medium" translated="Moyen" />
<strings original="High" translated="Haute" />
<strings original="Ultra" translated="Ultra" />
<strings original="Spot Metering Area" translated="Zone de mesure du spot" />
<strings original="Video Stream Aspect Ratio" translated="Ratio d’Aspect Video Stream" />
</locale>
</localization>
</mavlinkcamera>
cmake_minimum_required(VERSION 3.5)
project(zexample)
set(CMAKE_CXX_STANDARD 11)
add_executable(zexample
zexample.cpp
)
target_link_libraries(zexample
z
)
add_compile_options(zexample
-Wall
-Wextra
)

Example to use libz to compress camera definition file

Build and test:

cmake -Bbuild -H. && cmake --build build && ./build/zexample
[100%] Built target zexample
uncompressed size: 63538
compressed size: 4754 (7.5 %)
#include "zlib.h"
#include <fstream>
#include <vector>
int main()
{
std::ifstream file("camera_definition_e90.xml", std::ios::binary | std::ios::ate);
const std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);
std::vector<unsigned char> buffer(size);
if (!file.read(reinterpret_cast<char*>(buffer.data()), size))
{
printf("read failed\n");
return 1;
}
printf("uncompressed size: %d\n", size);
std::vector<unsigned char> compressed_buffer(size);
long unsigned compressed_buffer_len = compressed_buffer.size();
int err = compress(compressed_buffer.data(), &compressed_buffer_len, buffer.data(), buffer.size());
if (err != Z_OK) {
printf("compress failed: %d\n", err);
return 1;
}
printf("compressed size: %d (%.1f %)\n", compressed_buffer_len, 100.0f*(float)compressed_buffer_len/(float)size);
std::vector<unsigned char> new_buffer(size);
long unsigned new_buffer_len = new_buffer.size();
err = uncompress(new_buffer.data(), &new_buffer_len, compressed_buffer.data(), compressed_buffer_len);
if (err != Z_OK) {
printf("uncompress failed: %d\n", err);
return 1;
}
if (buffer.size() != new_buffer_len) {
printf("length does not match!\n");
}
if (buffer != new_buffer) {
printf("content does not match!\n");
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment