Add more tags. Improve test app.

Original commit message from CVS:
Add more tags. Improve test app.
This commit is contained in:
Edgard Lima 2008-02-07 13:59:41 +00:00
parent 26abf37c03
commit 6063b1da97
7 changed files with 741 additions and 169 deletions

View file

@ -1,3 +1,13 @@
2008-02-07 Edgard Lima <edgard.lima@indt.org.br>
* ext/metadata/metadata_mapping.htm:
* ext/metadata/metadataexif.c:
* ext/metadata/metadatatags.c:
* ext/metadata/metadatatags.h:
* tests/icles/metadata_editor.c:
* tests/icles/metadata_editor.glade:
Add more tags. Improve test app.
2008-02-07 Stefan Kost <ensonic@users.sf.net>
* gst/multifile/gstmultifilesink.c:

View file

@ -7,17 +7,18 @@
<META NAME="AUTHOR" CONTENT="Edgard Lima">
<META NAME="CREATED" CONTENT="20080131;12581600">
<META NAME="CHANGEDBY" CONTENT="Edgard Lima">
<META NAME="CHANGED" CONTENT="20080205;19004300">
<META NAME="CHANGED" CONTENT="20080207;15491600">
<META NAME="CHANGEDBY" CONTENT="Edgard Lima">
<META NAME="CHANGEDBY" CONTENT="Edgard Lima">
<!-- -->
<META NAME="CHANGEDBY" CONTENT="Edgard Lima">
<STYLE TYPE="text/css">
<!--
@page { size: landscape; margin: 2cm }
TD P { margin-bottom: 0cm }
TD P.western { so-language: en-US }
P { margin-bottom: 0.21cm }
P.western { so-language: en-US }
TD P { margin-bottom: 0cm }
TD P.western { so-language: en-US }
-->
</STYLE>
</HEAD>
@ -199,23 +200,20 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_CONTRAST</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_COLOR_SPACE</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-contrast&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-color-space&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_INT</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">from
-100 to 100:<BR>[-100, -34] soft ;<BR>[-33, 33] normal
;<BR>[34, 100] hard </FONT>
</P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">1-
sRGB;<BR>0xFFFF - Uncalibrated</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_CONTRAST<BR>0-
normal;<BR>1- soft;<BR>2- hard</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_COLOR_SPACE</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
@ -229,20 +227,23 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_CUSTOM_RENDERED</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_CONTRAST</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-custom-rendered&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-contrast&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_INT</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">0-
Normal process;<BR>1- Custom process</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">from
-100 to 100:<BR>[-100, -34] soft ;<BR>[-33, 33] normal
;<BR>[34, 100] hard </FONT>
</P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_CUSTOM_RENDERED</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_CONTRAST<BR>0-
normal;<BR>1- soft;<BR>2- hard</FONT></P>
</TD>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
@ -256,21 +257,77 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_DIGITAL_ZOOM</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_CUSTOM_RENDERED</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-digital-zoom&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-custom-rendered&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">0-
Normal process;<BR>1- Custom process</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_CUSTOM_RENDERED</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_DIGITAL_ZOOM</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-digital-zoom&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Digital
zoom ratio&quot;<BR>(zero, means digital zoom not used)</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_DIGITAL_ZOOM_RATIO</FONT></P>
</TD>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_EXPOSURE_MODE</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-exposure-mode&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">0-
Auto exposure;<BR>1- Manual exposure;<BR>2- Auto bracket (the
camera shoots a series of frames of the same scene at different
exposure settings)</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_EXPOSURE_MODE</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
@ -607,20 +664,20 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_SHUTTER_SPEED</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_SCENE_CAPTURE_TYPE</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-shutter-speed&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-scene-capture-type&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Saturation<BR>(in
APEX units)</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">0-
Standard;<BR>1- Landscape;<BR>2- Portrait;<BR>3- Night scene</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_SHUTTER_SPEED_VALUE</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_SCENE_CAPTURE_TYPE</FONT></P>
</TD>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
@ -634,15 +691,42 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_WHITE_BALANCE</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_SHUTTER_SPEED</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-white-balance&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-shutter-speed&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Saturation<BR>(in
APEX units)</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_SHUTTER_SPEED_VALUE</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CAPTURE_WHITE_BALANCE</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;capture-white-balance&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0.5cm"><FONT SIZE=1 STYLE="font-size: 8pt">0-
Auto; 1- Off </FONT>
</P>
@ -653,120 +737,93 @@
Sunlight ; 3- Cloudy ; 4- Shade ; 5- Tungsten ; 6- Fluorescent ;
7- Incandescent; 8- Flash ; 9- Horizon (sun on the horizon)</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT STYLE="margin-bottom: 0.5cm"><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_WHITE_BALANCE</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">(only
0 and 1)</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_CREATOR_TOOL</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;creator-tool&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">The
name of the first known tool used to create the resource. Or
firmware or driver version of device</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_SOFTWARE</FONT></P>
</TD>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10%>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_DEVICE_MAKE</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;device-make&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">The
manufacturer of the recording equipment</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_MAKE</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_DEVICE_MODEL</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;device-model&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">The
model name or model number of the equipment</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_MODEL</FONT></P>
</TD>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_HEIGHT</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-height&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Image
height in pixels</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_PIXEL_Y_DIMENSION</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
@ -779,20 +836,20 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_WIDTH</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_HEIGHT</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-width&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-height&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Image
width in pixels</FONT></P>
height in pixels</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_PIXEL_X_DIMENSION</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_PIXEL_Y_DIMENSION</FONT></P>
</TD>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
@ -806,163 +863,190 @@
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_XRESOLUTION</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_WIDTH</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-xresolution&quot;</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-width&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_UINT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Image
width in pixels</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_PIXEL_X_DIMENSION</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_XRESOLUTION</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-xresolution&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
</TD>
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Horizontal
resolution in pixels per inch.<BR>Here it is always in inches.<BR>In
EXIF it depends on EXIF_TAG_RESOLUTION_UNIT</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_X_RESOLUTION</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_IMAGE_YRESOLUTION</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;image-yresolution&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TYPE_FRACTION</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Vertical
resolution in pixels per inch.<BR>Here it is always in inches.<BR>In
EXIF it depends on EXIF_TAG_RESOLUTION_UNIT</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">EXIF_TAG_Y_RESOLUTION</FONT></P>
</TD>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=10%>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_COMPOSER</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;composer&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Name
of the creator of the object, e.g. writer, photographer or graphic
artist.</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">IPTC_TAG_BYLINE</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<TD WIDTH=10%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_COPYRIGHT</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;copyright&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">Any
necessary copyright notice.</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">IPTC_TAG_COPYRIGHT_NOTICE</FONT></P>
</TD>
<TD WIDTH=10%>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">dc:rights”</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_DESCRIPTION</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;description&quot;</FONT></P>
</TD>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<TD WIDTH=11%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">A
textual description of the data</FONT></P>
</TD>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<TD WIDTH=14%>
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<TD WIDTH=13%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">IPTC_TAG_CAPTION</FONT></P>
</TD>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<TD WIDTH=10%>
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">dc:description”</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">GST_TAG_TITLE</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">&quot;title&quot;</FONT></P>
</TD>
<TD WIDTH=11%>
<TD WIDTH=11% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">G_TYPE_STRING</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">A
shorthand reference for the object.</FONT></P>
</TD>
<TD WIDTH=14%>
<TD WIDTH=14% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=CENTER><FONT SIZE=1 STYLE="font-size: 8pt">-</FONT></P>
</TD>
<TD WIDTH=13%>
<TD WIDTH=13% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">IPTC_TAG_OBJECT_NAME</FONT></P>
</TD>
<TD WIDTH=10%>
<TD WIDTH=10% BGCOLOR="#e6e6ff">
<P CLASS="western" ALIGN=LEFT><FONT SIZE=1 STYLE="font-size: 8pt">dc:title”</FONT></P>
</TD>
</TR>

View file

@ -146,6 +146,9 @@ static MapIntStr mappedTags[] = {
{EXIF_TAG_BRIGHTNESS_VALUE, /*SRATIONAL,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_BRIGHTNESS /*GST_TYPE_FRACTION*/},
{EXIF_TAG_COLOR_SPACE, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_COLOR_SPACE /*G_TYPE_UINT*/},
{EXIF_TAG_CONTRAST, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_CONTRAST /*G_TYPE_INT*/},
@ -158,6 +161,9 @@ static MapIntStr mappedTags[] = {
{EXIF_TAG_EXPOSURE_PROGRAM, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_EXPOSURE_PROGRAM /*G_TYPE_UINT*/},
{EXIF_TAG_EXPOSURE_MODE, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_EXPOSURE_MODE /*G_TYPE_UINT*/},
{EXIF_TAG_EXPOSURE_TIME, /*RATIONAL,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_EXPOSURE_TIME /*GST_TYPE_FRACTION*/},
@ -185,6 +191,9 @@ static MapIntStr mappedTags[] = {
{EXIF_TAG_SATURATION, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_SATURATION /*G_TYPE_INT*/},
{EXIF_TAG_SCENE_CAPTURE_TYPE, /*SHORT,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_SCENE_CAPTURE_TYPE /*G_TYPE_UINT*/},
{EXIF_TAG_SHUTTER_SPEED_VALUE, /*SRATIONAL,*/ EXIF_IFD_EXIF,
GST_TAG_CAPTURE_SHUTTER_SPEED /*GST_TYPE_FRACTION*/},

View file

@ -126,6 +126,14 @@ metadata_tags_exif_register (void)
GST_TYPE_FRACTION, GST_TAG_CAPTURE_BRIGHTNESS,
"Brightness (APEX from -99.99 to 99.99)", NULL);
/*
* 1- sRGB
* 0xFFFF - Uncalibrated
*/
gst_tag_register (GST_TAG_CAPTURE_COLOR_SPACE, GST_TAG_FLAG_META,
G_TYPE_UINT, GST_TAG_CAPTURE_COLOR_SPACE, "Color Space", NULL);
/*
from -100 to 100
[-100, -34] - soft
@ -134,7 +142,7 @@ metadata_tags_exif_register (void)
*** exif is just 0, 1, 2 (normal, soft and hard)
*/
gst_tag_register (GST_TAG_CAPTURE_CONTRAST, GST_TAG_FLAG_META, G_TYPE_INT,
GST_TAG_CAPTURE_CONTRAST, "", NULL);
GST_TAG_CAPTURE_CONTRAST, "Contrast", NULL);
/*
* 0- Normal process
@ -151,6 +159,16 @@ metadata_tags_exif_register (void)
GST_TYPE_FRACTION, GST_TAG_CAPTURE_DIGITAL_ZOOM, "Digital zoom ratio",
NULL);
/*
* 0 - Auto exposure
* 1 - Manual exposure
* 2 - Auto bracket (the camera shoots a series of frames of the same scene
* at different exposure settings)
*/
gst_tag_register (GST_TAG_CAPTURE_EXPOSURE_MODE, GST_TAG_FLAG_META,
G_TYPE_UINT, GST_TAG_CAPTURE_EXPOSURE_MODE, "Exposure Mode", NULL);
/*
0 - not defined
1- Manual
@ -310,6 +328,15 @@ metadata_tags_exif_register (void)
gst_tag_register (GST_TAG_CAPTURE_SATURATION, GST_TAG_FLAG_META, G_TYPE_INT,
GST_TAG_CAPTURE_SATURATION, "The saturation", NULL);
/*
* 0 - Standard
* 1 - Landscape
* 2 - Portrait
* 3 - Night scene
*/
gst_tag_register (GST_TAG_CAPTURE_SCENE_CAPTURE_TYPE, GST_TAG_FLAG_META,
G_TYPE_UINT, GST_TAG_CAPTURE_SCENE_CAPTURE_TYPE, "Scene Type", NULL);
gst_tag_register (GST_TAG_CAPTURE_SHUTTER_SPEED, GST_TAG_FLAG_META,
GST_TYPE_FRACTION, GST_TAG_CAPTURE_SHUTTER_SPEED, "Shutter speed (APEX)",
NULL);

View file

@ -81,9 +81,11 @@ typedef enum {
#define GST_TAG_CAPTURE_APERTURE "capture-aperture"
#define GST_TAG_CAPTURE_BRIGHTNESS "capture-brightness"
#define GST_TAG_CAPTURE_COLOR_SPACE "capture-color-space"
#define GST_TAG_CAPTURE_CONTRAST "capture-contrast"
#define GST_TAG_CAPTURE_CUSTOM_RENDERED "capture-custom-rendered"
#define GST_TAG_CAPTURE_DIGITAL_ZOOM "capture-digital-zoom"
#define GST_TAG_CAPTURE_EXPOSURE_MODE "capture-exposure-mode"
#define GST_TAG_CAPTURE_EXPOSURE_PROGRAM "capture-exposure-program"
#define GST_TAG_CAPTURE_EXPOSURE_TIME "capture-exposure-time"
#define GST_TAG_CAPTURE_FLASH "capture-flash"
@ -94,6 +96,7 @@ typedef enum {
#define GST_TAG_CAPTURE_LIGHT_SOURCE "capture-light-source"
#define GST_TAG_CAPTURE_ORIENTATION "capture-orientation"
#define GST_TAG_CAPTURE_SATURATION "capture-saturation"
#define GST_TAG_CAPTURE_SCENE_CAPTURE_TYPE "capture-scene-capture-type"
#define GST_TAG_CAPTURE_SHUTTER_SPEED "capture-shutter-speed"
#define GST_TAG_CAPTURE_WHITE_BALANCE "capture-white-balance"

View file

@ -62,11 +62,22 @@ enum
COL_VALUE,
NUM_COLS
};
/* *INDENT-OFF* */
typedef enum _AppOptions {
APP_OPT_DEMUX_EXIF = (1 << 0),
APP_OPT_DEMUX_IPTC = (1 << 1),
APP_OPT_DEMUX_XMP = (1 << 2),
APP_OPT_MUX_EXIF = (1 << 3),
APP_OPT_MUX_IPTC = (1 << 4),
APP_OPT_MUX_XMP = (1 << 5),
APP_OPT_ALL = (1 << 6) - 1,
} AppOptions;
#define ENC_ERROR (-1)
#define ENC_DONE (0)
#define ENC_ERROR (-1)
#define ENC_DONE (0)
#define ENC_UNKNOWN (1)
/* *INDENT-OFF* */
/*
* functions prototypes
@ -79,7 +90,7 @@ static int
me_gst_setup_view_pipeline (const gchar * filename, GdkWindow * window);
static int
me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
gint * encode_status);
gint * encode_status, gboolean use_v4l2);
static int
me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
gint * encode_status);
@ -87,6 +98,7 @@ me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
/* ui related functions */
static void ui_refresh ();
static void process_file();
/*
* Global Vars
@ -103,6 +115,8 @@ GstElement *gst_video_sink = NULL;
GstElement *gst_file_sink = NULL;
GstElement *gst_pipeline = NULL;
AppOptions app_options = APP_OPT_ALL;
GstTagList *tag_list = NULL;
GladeXML *ui_glade_xml = NULL;
@ -113,7 +127,8 @@ GtkWidget *ui_tree = NULL;
GtkEntry *ui_entry_insert_tag = NULL;
GtkEntry *ui_entry_insert_value = NULL;
GtkToggleButton *ui_chk_bnt_capture = NULL;
GtkToggleButton *ui_chk_bnt_capture_v4l2 = NULL;
GtkToggleButton *ui_chk_bnt_capture_test = NULL;
GString *filename = NULL;
@ -264,6 +279,10 @@ on_buttonInsert_clicked (GtkButton * button, gpointer user_data)
const gchar *tag = gtk_entry_get_text (ui_entry_insert_tag);
const gchar *value = gtk_entry_get_text (ui_entry_insert_value);
if ( tag_list == NULL ) {
tag_list = gst_tag_list_new ();
}
if (tag && value && tag[0] != '\0') {
/* insert just new tags (the ones already in list should be modified) */
@ -314,16 +333,20 @@ on_buttonSaveFile_clicked (GtkButton * button, gpointer user_data)
GString *src_file = NULL;
gint enc_status = ENC_UNKNOWN;
const gboolean use_v4l2 =
gtk_toggle_button_get_active (ui_chk_bnt_capture_v4l2);
const gboolean use_test =
gtk_toggle_button_get_active (ui_chk_bnt_capture_test);
gst_element_set_state (gst_pipeline, GST_STATE_NULL);
gst_element_get_state (gst_pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
src_file = g_string_new (filename->str);
if (gtk_toggle_button_get_active (ui_chk_bnt_capture)) {
if (use_v4l2 || use_test) {
setup_new_filename (filename, ".jpg");
if (me_gst_setup_capture_pipeline (src_file->str, filename->str,
&enc_status)) {
&enc_status, use_v4l2)) {
goto done;
}
} else {
@ -381,13 +404,130 @@ done:
}
void
on_checkbuttonCapture_toggled (GtkToggleButton * togglebutton,
on_checkbuttonCaptureV4l2_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton)) {
}
if (gtk_toggle_button_get_active (togglebutton))
gtk_toggle_button_set_active(ui_chk_bnt_capture_test, FALSE);
}
void
on_checkbuttonCaptureTest_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
gtk_toggle_button_set_active(ui_chk_bnt_capture_v4l2, FALSE);
}
void
on_checkbuttonOptionsDemuxExif_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_DEMUX_EXIF;
else
app_options &= ~APP_OPT_DEMUX_EXIF;
}
void
on_checkbuttonOptionsDemuxIptc_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_DEMUX_IPTC;
else
app_options &= ~APP_OPT_DEMUX_IPTC;
}
void
on_checkbuttonOptionsDemuxXmp_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_DEMUX_XMP;
else
app_options &= ~APP_OPT_DEMUX_XMP;
}
void
on_checkbuttonOptionsMuxExif_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_MUX_EXIF;
else
app_options &= ~APP_OPT_MUX_EXIF;
}
void
on_checkbuttonOptionsMuxIptc_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_MUX_IPTC;
else
app_options &= ~APP_OPT_MUX_IPTC;
}
void
on_checkbuttonOptionsMuxXmp_toggled (GtkToggleButton * togglebutton,
gpointer user_data)
{
if (gtk_toggle_button_get_active (togglebutton))
app_options |= APP_OPT_MUX_XMP;
else
app_options &= ~APP_OPT_MUX_XMP;
}
void
on_buttonOpenFile_clicked (GtkButton * button, gpointer user_data)
{
GtkWidget *dialog;
gboolean open = FALSE;
dialog = gtk_file_chooser_dialog_new ("Open File",
GTK_WINDOW(ui_main_window),
GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
if (filename) {
const char *p = filename->str;
char *q = filename->str + filename->len - 1;
for (;p != q; --q) {
if ( *q == '/' )
break;
}
if ( p != q )
*q = '\0';
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (dialog),
filename->str);
if ( p != q )
*q = '/';
}
open = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT;
if (open) {
char *str;
str = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
if (filename)
g_string_free (filename, TRUE);
filename = g_string_new(str);
g_free (str);
}
gtk_widget_destroy (dialog);
if (open) {
process_file();
}
}
/*
* UI handling functions
*/
@ -519,6 +659,62 @@ ui_refresh ()
gtk_window_set_title (GTK_WINDOW (ui_main_window), filename->str);
}
static int
ui_connect_signals()
{
glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureV4l2_toggled",
(GCallback)on_checkbuttonCaptureV4l2_toggled);
glade_xml_signal_connect(ui_glade_xml, "on_checkbuttonCaptureTest_toggled",
(GCallback)on_checkbuttonCaptureTest_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxExif_toggled",
(GCallback) on_checkbuttonOptionsDemuxExif_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxIptc_toggled",
(GCallback) on_checkbuttonOptionsDemuxIptc_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsDemuxXmp_toggled",
(GCallback) on_checkbuttonOptionsDemuxXmp_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxExif_toggled",
(GCallback) on_checkbuttonOptionsMuxExif_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxIptc_toggled",
(GCallback) on_checkbuttonOptionsMuxIptc_toggled);
glade_xml_signal_connect(ui_glade_xml,
"on_checkbuttonOptionsMuxXmp_toggled",
(GCallback) on_checkbuttonOptionsMuxXmp_toggled);
glade_xml_signal_connect(ui_glade_xml, "on_buttonSaveFile_clicked",
(GCallback)on_buttonSaveFile_clicked);
glade_xml_signal_connect(ui_glade_xml, "on_windowMain_delete_event",
(GCallback)on_windowMain_delete_event);
glade_xml_signal_connect(ui_glade_xml, "on_drawingMain_expose_event",
(GCallback)on_drawingMain_expose_event);
glade_xml_signal_connect(ui_glade_xml, "on_windowMain_configure_event",
(GCallback)on_windowMain_configure_event);
glade_xml_signal_connect(ui_glade_xml, "on_buttonInsert_clicked",
(GCallback)on_buttonInsert_clicked);
glade_xml_signal_connect(ui_glade_xml, "on_buttonOpenFile_clicked",
(GCallback)on_buttonOpenFile_clicked);
return 0;
}
static int
ui_create ()
{
@ -544,18 +740,23 @@ ui_create ()
ui_entry_insert_value =
GTK_ENTRY (glade_xml_get_widget (ui_glade_xml, "entryValue"));
ui_chk_bnt_capture =
ui_chk_bnt_capture_v4l2 =
GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
"checkbuttonCapture"));
"checkbuttonCaptureV4l2"));
if (!(ui_main_window && ui_drawing && ui_tree && ui_entry_insert_tag
&& ui_entry_insert_value && ui_chk_bnt_capture)) {
ui_chk_bnt_capture_test =
GTK_TOGGLE_BUTTON (glade_xml_get_widget (ui_glade_xml,
"checkbuttonCaptureTest"));
if (!(ui_main_window && ui_drawing && ui_tree
&& ui_entry_insert_tag && ui_entry_insert_value
&& ui_chk_bnt_capture_v4l2 && ui_chk_bnt_capture_test)) {
fprintf (stderr, "Some widgets couldn't be created\n");
ret = -105;
goto done;
}
glade_xml_signal_autoconnect (ui_glade_xml);
ui_connect_signals();
ui_setup_tree_view (GTK_TREE_VIEW (ui_tree));
@ -752,7 +953,7 @@ done:
static int
me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
gint * encode_status)
gint * encode_status, gboolean use_v4l2)
{
int ret = 0;
GstBus *bus = NULL;
@ -763,7 +964,10 @@ me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
me_gst_cleanup_elements ();
/* create elements */
gst_source = gst_element_factory_make ("v4l2src", NULL);
if ( use_v4l2 )
gst_source = gst_element_factory_make ("v4l2src", NULL);
else
gst_source = gst_element_factory_make ("videotestsrc", NULL);
gst_video_convert = gst_element_factory_make ("ffmpegcolorspace", NULL);
gst_image_enc = gst_element_factory_make ("jpegenc", NULL);
gst_metadata_mux = gst_element_factory_make ("metadatamux", NULL);
@ -788,6 +992,20 @@ me_gst_setup_capture_pipeline (const gchar * src_file, const gchar * dest_file,
/* set elements's properties */
g_object_set (gst_source, "num-buffers", 1, NULL);
g_object_set (gst_file_sink, "location", dest_file, NULL);
if ( app_options & APP_OPT_MUX_EXIF )
g_object_set (gst_metadata_mux, "exif", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "exif", FALSE, NULL);
if ( app_options & APP_OPT_MUX_IPTC )
g_object_set (gst_metadata_mux, "iptc", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "iptc", FALSE, NULL);
if ( app_options & APP_OPT_MUX_XMP )
g_object_set (gst_metadata_mux, "xmp", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "xmp", FALSE, NULL);
/* adding and linking elements */
gst_bin_add_many (GST_BIN (gst_pipeline), gst_source, gst_video_convert,
@ -859,6 +1077,36 @@ me_gst_setup_encode_pipeline (const gchar * src_file, const gchar * dest_file,
g_object_set (gst_source, "location", src_file, NULL);
g_object_set (gst_file_sink, "location", dest_file, NULL);
if ( app_options & APP_OPT_DEMUX_EXIF )
g_object_set (gst_metadata_demux, "exif", TRUE, NULL);
else
g_object_set (gst_metadata_demux, "exif", FALSE, NULL);
if ( app_options & APP_OPT_DEMUX_IPTC )
g_object_set (gst_metadata_demux, "iptc", TRUE, NULL);
else
g_object_set (gst_metadata_demux, "iptc", FALSE, NULL);
if ( app_options & APP_OPT_DEMUX_XMP )
g_object_set (gst_metadata_demux, "xmp", TRUE, NULL);
else
g_object_set (gst_metadata_demux, "xmp", FALSE, NULL);
if ( app_options & APP_OPT_MUX_EXIF )
g_object_set (gst_metadata_mux, "exif", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "exif", FALSE, NULL);
if ( app_options & APP_OPT_MUX_IPTC )
g_object_set (gst_metadata_mux, "iptc", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "iptc", FALSE, NULL);
if ( app_options & APP_OPT_MUX_XMP )
g_object_set (gst_metadata_mux, "xmp", TRUE, NULL);
else
g_object_set (gst_metadata_mux, "xmp", FALSE, NULL);
/* adding and linking elements */
gst_bin_add_many (GST_BIN (gst_pipeline), gst_source, gst_metadata_demux,
gst_metadata_mux, gst_file_sink, NULL);
@ -967,34 +1215,47 @@ done:
}
static void
process_file() {
/* filename for future usage (title and file name to be created) */
me_gst_cleanup_elements ();
if (tag_list) {
gst_tag_list_free (tag_list);
tag_list = NULL;
}
/* create pipeline */
me_gst_setup_view_pipeline (filename->str, ui_drawing->window);
gst_element_set_state (gst_pipeline, GST_STATE_PLAYING);
ui_refresh ();
}
int
main (int argc, char *argv[])
{
int ret = 0;
if (argc != 2) {
fprintf (stderr, "Give the name of a jpeg file as argument\n");
ret = -5;
goto done;
if (argc >= 2) {
if (filename)
g_string_free (filename, TRUE);
filename = g_string_new (argv[1]);
}
gst_init (&argc, &argv);
gtk_init (&argc, &argv);
/* filename for future usage (title and file name to be created) */
if (filename)
g_string_free (filename, TRUE);
filename = g_string_new (argv[1]);
/* create UI */
if ((ret = ui_create ())) {
goto done;
}
/* create pipeline */
me_gst_setup_view_pipeline (argv[1], ui_drawing->window);
gst_element_set_state (gst_pipeline, GST_STATE_PLAYING);
if (argc >= 2) {
process_file();
}
gtk_main ();

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
<!--Generated with glade3 3.2.0 on Mon Dec 17 11:42:47 2007 by edlima@feisty-laptop-->
<!--Generated with glade3 3.4.0 on Thu Feb 7 14:44:35 2008 -->
<glade-interface>
<widget class="GtkWindow" id="windowMain">
<property name="width_request">800</property>
@ -96,6 +96,7 @@
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Insert</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonInsert_clicked"/>
</widget>
<packing>
@ -110,6 +111,7 @@
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Save File</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonSaveFile_clicked"/>
</widget>
<packing>
@ -124,13 +126,188 @@
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonCapture">
<widget class="GtkHBox" id="hboxOptions">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Capture image from camera</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonCapture_toggled"/>
<child>
<widget class="GtkVBox" id="vboxCaptureOptions">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkCheckButton" id="checkbuttonCaptureV4l2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Capture image from camera</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonCaptureV4l2_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonCaptureTest">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Capture image from videotestsrc</property>
<property name="response_id">0</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonCaptureTest_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="buttonOpenFile">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">Open File...</property>
<property name="response_id">0</property>
<signal name="clicked" handler="on_buttonOpenFile_clicked"/>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
</child>
<child>
<widget class="GtkVBox" id="vboxOptionsDemux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkLabel" id="labelDemux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Demux options:</property>
</widget>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxExif">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">exif</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxExif_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxIptc">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">iptc</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxIptc_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsDemuxXmp">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">xmp</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsDemuxXmp_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</widget>
<packing>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkVBox" id="vboxOptionsMux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<child>
<widget class="GtkLabel" id="labelMux">
<property name="visible">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Mux options:</property>
</widget>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxExif">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">exif</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxExif_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxIptc">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">iptc</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxIptc_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">2</property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="checkbuttonOptionsMuxXmp">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="label" translatable="yes">xmp</property>
<property name="response_id">0</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_checkbuttonOptionsMuxXmp_toggled"/>
</widget>
<packing>
<property name="fill">False</property>
<property name="position">3</property>
</packing>
</child>
</widget>
<packing>
<property name="position">2</property>
</packing>
</child>
</widget>
<packing>
<property name="position">2</property>
@ -145,6 +322,7 @@
</child>
</widget>
<packing>
<property name="resize">True</property>
<property name="shrink">False</property>
</packing>
</child>