<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://bugs.maemo.com/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://bugs.maemo.com/index.php?action=history&amp;feed=atom&amp;title=Documentation%2FMaemo_5_Developer_Guide%2FUsing_Multimedia_Components%2FCamera_API_Usage</id>
		<title>Documentation/Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://bugs.maemo.com/index.php?action=history&amp;feed=atom&amp;title=Documentation%2FMaemo_5_Developer_Guide%2FUsing_Multimedia_Components%2FCamera_API_Usage"/>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;action=history"/>
		<updated>2026-04-06T00:35:25Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.15.5-7</generator>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=37846&amp;oldid=prev</id>
		<title>amigadave:&amp;#32;use &lt;code&gt;</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=37846&amp;oldid=prev"/>
				<updated>2010-08-17T09:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;use &amp;lt;code&amp;gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:49, 17 August 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 12:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Data exchanged between the device file and user-level application has a standardized format for each device class. This allows the application to be instantly compatible with every video capture device that has a driver for Linux.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Data exchanged between the device file and user-level application has a standardized format for each device class. This allows the application to be instantly compatible with every video capture device that has a driver for Linux.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The built-in cameras present in Maemo devices are compatible with [http://linux.bytesex.org/v4l2/ Video-4-Linux version 2 API]. In principle, any application compatible with this API is easily portable to the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;maemo &lt;/del&gt;platform.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The built-in cameras present in Maemo devices are compatible with [http://linux.bytesex.org/v4l2/ Video-4-Linux version 2 API]. In principle, any application compatible with this API is easily portable to the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Maemo &lt;/ins&gt;platform.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Since the Maemo platform delegates all multimedia handling to the GStreamer framework, applications that need access to the built-in camera should employ GStreamer for this, instead of directly accessing Video4Linux devices, via the &amp;lt;code&amp;gt;v4l2src&amp;lt;/code&amp;gt; GStreamer module.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Since the Maemo platform delegates all multimedia handling to the GStreamer framework, applications that need access to the built-in camera should employ GStreamer for this, instead of directly accessing Video4Linux devices, via the &amp;lt;code&amp;gt;v4l2src&amp;lt;/code&amp;gt; GStreamer module.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;One important note about the camera in the maemo device: only one application can use it at any given time. So, while using the camera in an application, other tasks that could possibly make use of it (e.g. a video call) will be blocked.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;One important note about the camera in the maemo device: only one application can use it at any given time. So, while using the camera in an application, other tasks that could possibly make use of it (e.g. a video call) will be blocked.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To ease developing an application that does video recording and still image capture, a high level gstreamer element has been developed. CameraBin follows the idea behind other high level elements like playbin2. One can add capture support to an application without the need to deal with the lowlevel media-processing graph.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To ease developing an application that does video recording and still image capture, a high level gstreamer element has been developed. CameraBin follows the idea behind other high level elements like &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;code&amp;gt;&lt;/ins&gt;playbin2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;. One can add capture support to an application without the need to deal with the lowlevel media-processing graph.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To demonstrate how the camera manipulation is performed, a low-level example application is provided and discussed.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;To demonstrate how the camera manipulation is performed, a low-level example application is provided and discussed.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Camera Manipulation in C Language ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==Camera Manipulation in C Language ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:25 --&gt;
&lt;/table&gt;</summary>
		<author><name>amigadave</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=37234&amp;oldid=prev</id>
		<title>amigadave:&amp;#32;wikify slightly, use &lt;source&gt; and &lt;code&gt;</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=37234&amp;oldid=prev"/>
				<updated>2010-07-23T12:48:33Z</updated>
		
		<summary type="html">&lt;p&gt;wikify slightly, use &amp;lt;source&amp;gt; and &amp;lt;code&amp;gt;&lt;/p&gt;
&lt;a href=&quot;http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;amp;diff=37234&amp;amp;oldid=29376&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>amigadave</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29376&amp;oldid=prev</id>
		<title>amigadave:&amp;#32;categorise</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29376&amp;oldid=prev"/>
				<updated>2010-02-12T12:55:34Z</updated>
		
		<summary type="html">&lt;p&gt;categorise&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:55, 12 February 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 248:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 248:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Development]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Documentation]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Fremantle]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:31 --&gt;
&lt;/table&gt;</summary>
		<author><name>amigadave</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29051&amp;oldid=prev</id>
		<title>tapio:&amp;#32;/* Camera Manipulation in C Language */</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29051&amp;oldid=prev"/>
				<updated>2010-02-11T15:41:03Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Camera Manipulation in C Language&lt;/span&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:41, 11 February 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/maemo-examples&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/maemo-examples&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()'' ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;/maemo-examples&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()'' ([https://vcs.maemo.org/svn/maemoexamples/tags/maemo_5.0/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 178:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 178:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ''xvimagesink'' GStreamer module will normally create a new window just for itself. Since the video is supposed to be shown inside the main application window, the X-Window window ID needs to be passed to the module, as soon as the ID exists ([https://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;garage&lt;/del&gt;.maemo.org/svn/maemoexamples/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;trunk&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ''xvimagesink'' GStreamer module will normally create a new window just for itself. Since the video is supposed to be shown inside the main application window, the X-Window window ID needs to be passed to the module, as soon as the ID exists ([https://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vcs&lt;/ins&gt;.maemo.org/svn/maemoexamples/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tags/maemo_5.0&lt;/ins&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callback to be called when the screen-widget is exposed */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callback to be called when the screen-widget is exposed */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:31 --&gt;
&lt;/table&gt;</summary>
		<author><name>tapio</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29039&amp;oldid=prev</id>
		<title>tapio:&amp;#32;/* Camera Manipulation in C Language */</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29039&amp;oldid=prev"/>
				<updated>2010-02-11T15:39:11Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Camera Manipulation in C Language&lt;/span&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:39, 11 February 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps ([https://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;garage&lt;/del&gt;.maemo.org/svn/maemoexamples/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;trunk&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps ([https://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vcs&lt;/ins&gt;.maemo.org/svn/maemoexamples/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tags/maemo_5.0/maemo-examples&lt;/ins&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()'' ([https://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;garage&lt;/del&gt;.maemo.org/svn/maemoexamples/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;trunk&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()'' ([https://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vcs&lt;/ins&gt;.maemo.org/svn/maemoexamples/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tags/maemo_5.0/maemo-examples&lt;/ins&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>tapio</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29030&amp;oldid=prev</id>
		<title>tapio:&amp;#32;/* Camera Manipulation in C Language */</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=29030&amp;oldid=prev"/>
				<updated>2010-02-11T15:37:50Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Camera Manipulation in C Language&lt;/span&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:37, 11 February 2010&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows ([https://&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;garage&lt;/del&gt;.maemo.org/svn/maemoexamples/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;trunk&lt;/del&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows ([https://&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;vcs&lt;/ins&gt;.maemo.org/svn/maemoexamples/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;tags/maemo_5.0/maemo-examples&lt;/ins&gt;/maemo-examples/example_camera.c see example_camera.c in maemo-examples]):&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>tapio</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=25311&amp;oldid=prev</id>
		<title>dneary at 17:46, 29 December 2009</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=25311&amp;oldid=prev"/>
				<updated>2009-12-29T17:46:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 17:46, 29 December 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows: example_camera.c&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;([https&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//garage.maemo.org/svn/maemoexamples/trunk/maemo-examples/&lt;/ins&gt;example_camera.c &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;see example_camera.c in maemo-examples]):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps: example_camera.c&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;([https&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//garage.maemo.org/svn/maemoexamples/trunk/maemo-examples/&lt;/ins&gt;example_camera.c &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;see example_camera.c in maemo-examples]):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 142:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()''&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;nowiki&amp;gt;&lt;/del&gt;: &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;&lt;/del&gt;/&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nowiki&amp;gt;&lt;/del&gt;example_camera.c&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()'' &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;([https&lt;/ins&gt;:/&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;/garage.maemo.org/svn/maemoexamples/trunk/maemo-examples/&lt;/ins&gt;example_camera.c &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;see example_camera.c in maemo-examples]):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 178:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ''xvimagesink'' GStreamer module will normally create a new window just for itself. Since the video is supposed to be shown inside the main application window, the X-Window window ID needs to be passed to the module, as soon as the ID exists: example_camera.c&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The ''xvimagesink'' GStreamer module will normally create a new window just for itself. Since the video is supposed to be shown inside the main application window, the X-Window window ID needs to be passed to the module, as soon as the ID exists &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;([https&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//garage.maemo.org/svn/maemoexamples/trunk/maemo-examples/&lt;/ins&gt;example_camera.c &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;see example_camera.c in maemo-examples]):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callback to be called when the screen-widget is exposed */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callback to be called when the screen-widget is exposed */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 192:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 191:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For the sake of completeness, it follows the JPEG encoding function. It is worthwhile to mention that the buffer that came from GStreamer is a simple linear framebuffer: example_camera.c&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;For the sake of completeness, it follows the JPEG encoding function. It is worthwhile to mention that the buffer that came from GStreamer is a simple linear framebuffer &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;([https&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;//garage.maemo.org/svn/maemoexamples/trunk/maemo-examples/&lt;/ins&gt;example_camera.c &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;see example_camera.c in maemo-examples]):&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Creates a jpeg file from the buffer's raw image data */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Creates a jpeg file from the buffer's raw image data */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_jpeg&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;unsigned&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_jpeg&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;unsigned&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>dneary</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15535&amp;oldid=prev</id>
		<title>bijjal at 15:06, 13 July 2009</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15535&amp;oldid=prev"/>
				<updated>2009-07-13T15:06:14Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 15:06, 13 July 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 250:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 250:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;nbsp; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Maemo training material]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff generator: internal 2026-04-06 00:35:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>bijjal</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15428&amp;oldid=prev</id>
		<title>danielwilms:&amp;#32;1 revision</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15428&amp;oldid=prev"/>
				<updated>2009-07-13T11:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;

		&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;col class='diff-marker' /&gt;
		&lt;col class='diff-content' /&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 11:45, 13 July 2009&lt;/td&gt;
		&lt;/tr&gt;
		&lt;!-- diff generator: internal 2026-04-06 00:35:32 --&gt;
&lt;/table&gt;</summary>
		<author><name>danielwilms</name></author>	</entry>

	<entry>
		<id>http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15427&amp;oldid=prev</id>
		<title>wikiadmin:&amp;#32;moved Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage to Documentation/Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage</title>
		<link rel="alternate" type="text/html" href="http://bugs.maemo.com/index.php?title=Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;diff=15427&amp;oldid=prev"/>
				<updated>2009-07-13T11:40:09Z</updated>
		
		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/index.php?title=Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage (page does not exist)&quot;&gt;Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage&lt;/a&gt; to &lt;a href=&quot;/Documentation/Maemo_5_Developer_Guide/Using_Multimedia_Components/Camera_API_Usage&quot; title=&quot;Documentation/Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage&quot;&gt;Documentation/Maemo 5 Developer Guide/Using Multimedia Components/Camera API Usage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__FORCETOC__&lt;br /&gt;
= Camera API Usage =&lt;br /&gt;
This section explains how to use the Camera API to access the camera hardware that is present in some models of Nokia Internet Tablets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Camera Hardware and Linux ==&lt;br /&gt;
The Linux operating system supports live video and audio hardware, such as webcams, TV tuners, video capture cards, FM radio tuners, video ''output'' devices etc. The primary API for the applications to access those devices is [http://linux.bytesex.org/v4l2/ Video4Linux2].&lt;br /&gt;
&lt;br /&gt;
Video4Linux2 is a ''kernel'' API, so there must be kernel drivers for each supported device. At the user level, device access is standardized via device files. In the case of video capture devices like cameras, which are the focus of this material, the files would be ''/dev/video0'', ''/dev/video1'', etc., as many as there are connected devices.&lt;br /&gt;
&lt;br /&gt;
Data exchanged between the device file and user-level application has a standardized format for each device class. This allows the application to be instantly compatible with every video capture device that has a driver for Linux.&lt;br /&gt;
&lt;br /&gt;
The built-in cameras present in Maemo devices are compatible with [http://linux.bytesex.org/v4l2/ Video-4-Linux version 2 API]. In principle, any application compatible with this API is easily portable to the maemo platform.&lt;br /&gt;
&lt;br /&gt;
Since the maemo platform delegates all multimedia handling to the GStreamer framework, applications that need access to the built-in camera should employ GStreamer for this, instead of directly accessing Video4Linux devices, via the ''v4l2src'' GStreamer module.&lt;br /&gt;
&lt;br /&gt;
Thanks to the flexibility of GStreamer, a developer can fully test any given application in a regular desktop PC with a connected webcam, and then perform the final test in the Internet Tablet itself, without a single change in the source code, since GStreamer refers to modules as text names.&lt;br /&gt;
&lt;br /&gt;
One important note about the camera in the maemo device: only one application can use it at any given time. So, while using the camera in an application, other tasks that could possibly make use of it (e.g. a video call) will be blocked.&lt;br /&gt;
&lt;br /&gt;
To ease developing an application that does video recording and still image capture, a high level gstreamer element has been developed. CameraBin follows the idea behind other high level elements like playbin2. One can add capture support to an application without the need to deal with the lowlevel media-processing graph.&lt;br /&gt;
&lt;br /&gt;
To demonstrate how the camera manipulation is performed, a low-level example application is provided and discussed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Camera Manipulation in C Language ==&lt;br /&gt;
This C application allows to use the maemo device as a &amp;quot;mirror&amp;quot; (i.e. showing the camera input in the screen), as well as allows to take pictures to be saved as JPEG files (which illustrates the video frame buffer manipulation).&lt;br /&gt;
&lt;br /&gt;
In this example, the function initialize_pipeline() is most interesting, since it is responsible for creating the GStreamer pipeline, sourcing data from Video4Linux and sinking it to a ''xvimagesink'' (which is an optimized X framebuffer). The pipeline scheme is as follows: example_camera.c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize the the Gstreamer pipeline. Below is a diagram&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * of the pipeline that will be created:&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * &amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; *                             |Screen|  |Screen|&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; *                           -&amp;amp;gt;|queue |-&amp;amp;gt;|sink  |-&amp;amp;gt; Display&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * |Camera|  |CSP   |  |Tee|/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * |src   |-&amp;amp;gt;|Filter|-&amp;amp;gt;|   |  |Image|   |Image |  |Image|&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; *                           -&amp;amp;gt;|queue|-&amp;amp;gt; |filter|-&amp;amp;gt;|sink |-&amp;amp;gt; JPEG file&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Between the source and sinks, there are two ''ffmpegcolorspace'' filters, one to configure the camera frame rate and the picture size expected by the JPEG encoder, and the second to satisfy the video sink. Capabilities (&amp;quot;caps&amp;quot;) are employed to tell which format the data needs to have when exiting the filter.&lt;br /&gt;
&lt;br /&gt;
The second filter is necessary, since the video sink may have different requirements (bit depth, color space) from the JPEG encoder. Those requirements can vary also according to the hardware.&lt;br /&gt;
&lt;br /&gt;
Because there are two sinks, the queues are important, since they guarantee that each pipeline segment operates on its own thread downstream the queue. This ensures that the different sinks can synchronize without waiting for each other.&lt;br /&gt;
&lt;br /&gt;
This sample application is not different from other GStreamer applications, be it Linux-generic or maemo-specific apps: example_camera.c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;initialize_pipeline&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;int&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;argc&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;argv&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstElement&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;camera_src&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;screen_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstElement&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;screen_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstElement&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;csp_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;tee&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstCaps&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;caps&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstBus&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;bus&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Initialize Gstreamer */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_init&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;argc&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; argv&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create pipeline and attach a callback to it's&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * message bus */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	pipeline &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_pipeline_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;test-camera&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	bus &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_pipeline_get_bus&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_PIPELINE&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;));&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_bus_add_watch&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;bus&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;GstBusFunc&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;bus_callback&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_object_unref&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_OBJECT&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;bus&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;));&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Save pipeline to the AppData structure */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create elements */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Camera video stream comes from a Video4Linux driver */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	camera_src &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;VIDEO_SRC&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;camera_src&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Colorspace filter is needed to make sure that sinks understands&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * the stream coming from the camera */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	csp_filter &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;ffmpegcolorspace&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;csp_filter&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Tee that copies the stream to multiple outputs */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	tee &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;tee&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;tee&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Queue creates new thread for the stream */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	screen_queue &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;queue&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;screen_queue&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Sink that shows the image on screen. Xephyr doesn't support XVideo&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * extension, so it needs to use ximagesink, but the device uses&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * xvimagesink */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	screen_sink &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;VIDEO_SINK&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;screen_sink&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Creates separate thread for the stream from which the image&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * is captured */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	image_queue &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;queue&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;image_queue&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Filter to convert stream to use format that the gdkpixbuf library&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * can use */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	image_filter &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;ffmpegcolorspace&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;image_filter&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* A dummy sink for the image stream. Goes to bitheaven */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	image_sink &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_factory_make&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;fakesink&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;image_sink&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Check that elements are correctly initialized */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; camera_src &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_sink &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; csp_filter &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_queue&lt;br /&gt;
 		&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_queue &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_filter &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_critical&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;Couldn't create pipeline elements&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Set image sink to emit handoff-signal before throwing away&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * it's buffer */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_object_set&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;G_OBJECT&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;signal-handoffs&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Add elements to the pipeline. This has to be done prior to&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * linking them */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_bin_add_many&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_BIN&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; camera_src&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; csp_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			tee&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			image_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Specify what kind of video is wanted from the camera */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	caps &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_caps_new_simple&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;video/x-raw-rgb&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;width&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;640&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;height&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;480&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Link the camera source and colorspace filter using capabilities&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * specified */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_link_filtered&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;camera_src&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; csp_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; caps&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_caps_unref&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;caps&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Connect Colorspace Filter -&amp;amp;gt; Tee -&amp;amp;gt; Screen Queue -&amp;amp;gt; Screen Sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * This finalizes the initialization of the screen-part of the pipeline */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_link_many&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;csp_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; tee&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; screen_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* gdkpixbuf requires 8 bits per sample which is 24 bits per&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * pixel */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	caps &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_caps_new_simple&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;video/x-raw-rgb&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;width&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;640&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;height&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;480&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;bpp&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;24&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;depth&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; G_TYPE_INT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;24&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;framerate&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GST_TYPE_FRACTION&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;15&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Link the image-branch of the pipeline. The pipeline is&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * ready after this */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_link_many&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;tee&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_queue&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_link_filtered&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_filter&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; caps&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_caps_unref&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;caps&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* As soon as screen is exposed, window ID will be advised to the sink */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_signal_connect&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;screen&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;expose-event&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;G_CALLBACK&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;expose_cb&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			 screen_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_set_state&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GST_STATE_PLAYING&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following function is called back when the user has pressed the &amp;quot;Take photo&amp;quot; button, and the image sink has data. It will forward the image buffer to ''create_jpeg()''&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;example_camera.c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This callback will be registered to the image sink&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt; * after user requests a photo */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;buffer_probe_callback&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstElement&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstBuffer&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;buffer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstPad&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pad&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;AppData&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GstMessage&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;message&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gchar&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;message_name&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* This is the raw RGB-data that image sink is about&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * to discard */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;unsigned&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data_photo &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	    &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;unsigned&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*)&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_BUFFER_DATA&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;buffer&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create a JPEG of the data and check the status */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_jpeg&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data_photo&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		message_name &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;photo-failed&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;else&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&lt;br /&gt;
 		message_name &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;photo-taken&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Disconnect the handler so no more photos&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * are taken */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_signal_handler_disconnect&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;G_OBJECT&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;image_sink&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;buffer_cb_id&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create and send an application message which will be&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * catched in the bus watcher function. This has to be&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * sent as a message because this callback is called in&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * a gstreamer thread and calling GUI-functions here would&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * lead to X-server synchronization problems */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	message &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_message_new_application&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_OBJECT&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_structure_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;message_name&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;));&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_element_post_message&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;appdata&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pipeline&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; message&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Returning TRUE means that the buffer can is OK to be&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * sent forward. When using fakesink this doesn't really&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * matter because the data is discarded anyway */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''xvimagesink'' GStreamer module will normally create a new window just for itself. Since the video is supposed to be shown inside the main application window, the X-Window window ID needs to be passed to the module, as soon as the ID exists: example_camera.c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callback to be called when the screen-widget is exposed */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;expose_cb&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;GtkWidget &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; widget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; GdkEventExpose &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; event&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gpointer&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Tell the xvimagesink/ximagesink the x-window-id of the screen&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * widget in which the video is shown. After this the video&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * is shown in the correct widget */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gst_x_overlay_set_xwindow_id&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GST_X_OVERLAY&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;),&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 				     &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;GDK_WINDOW_XWINDOW&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;widget&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;window&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;));&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the sake of completeness, it follows the JPEG encoding function. It is worthwhile to mention that the buffer that came from GStreamer is a simple linear framebuffer: example_camera.c&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;tt&amp;gt;&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Creates a jpeg file from the buffer's raw image data */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;static&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gboolean&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;create_jpeg&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;unsigned&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#009900&amp;quot;&amp;gt;char&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GdkPixbuf&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pixbuf &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GError&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;error &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;guint&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; height&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; width&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; bpp&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;const&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;gchar&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;directory&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;GString&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;guint&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; base_len&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; i&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;struct&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#008080&amp;quot;&amp;gt;stat&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; statbuf&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	width &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;640&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; height &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;480&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; bpp &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;24&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Define the save folder */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	directory &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; SAVE_FOLDER_DEFAULT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;directory &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;==&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		directory &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_get_tmp_dir&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;();&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create an unique file name */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	filename &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_new&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_build_filename&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;directory&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; PHOTO_NAME_DEFAULT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;));&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	base_len &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;len&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_append&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; PHOTO_NAME_SUFFIX_DEFAULT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;for&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;i &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;1&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;!&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;stat&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;str&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;statbuf&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;++&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;i&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;)&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_truncate&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; base_len&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_append_printf&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;%d%s&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; i&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; PHOTO_NAME_SUFFIX_DEFAULT&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Create a pixbuf object from the data */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	pixbuf &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gdk_pixbuf_new_from_data&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;data&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 			GDK_COLORSPACE_RGB&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* RGB-colorspace */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 			FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* No alpha-channel */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 			bpp&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;/&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Bits per RGB-component */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 			width&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; height&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Dimensions */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 			&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#993399&amp;quot;&amp;gt;3&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;width&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Number of bytes between lines (ie stride) */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 			NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Callbacks */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Save the pixbuf content's in to a jpeg file and check for&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * errors */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;if&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(!&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gdk_pixbuf_save&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pixbuf&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;str&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;jpeg&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;amp;amp;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;error&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; NULL&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;))&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;{&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_warning&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;%s&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#CC33CC&amp;quot;&amp;gt;\n&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;&amp;quot;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; error&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;-&amp;amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;message&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_error_free&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;error&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gdk_pixbuf_unref&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pixbuf&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_free&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 		&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; FALSE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 	&amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;/* Free allocated resources and return TRUE which means&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#9A1900&amp;quot;&amp;gt;	 * that the operation was succesful */&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;''&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;g_string_free&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;filename&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;,&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#000000&amp;quot;&amp;gt;gdk_pixbuf_unref&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;(&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;pixbuf&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;);&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 	&amp;lt;span&amp;gt;'''&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#0000FF&amp;quot;&amp;gt;return&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;'''&amp;lt;/span&amp;gt; TRUE&amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#990000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;;&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
 &amp;lt;span&amp;gt;&amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;}&amp;lt;/font&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Maemo training material]]&lt;/div&gt;</summary>
		<author><name>wikiadmin</name></author>	</entry>

	</feed>