<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Prenos</id>
	<title>WebOS Internals - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.webos-internals.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Prenos"/>
	<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/wiki/Special:Contributions/Prenos"/>
	<updated>2026-04-21T08:24:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Haxedemoicon.png&amp;diff=10560</id>
		<title>File:Haxedemoicon.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Haxedemoicon.png&amp;diff=10560"/>
		<updated>2010-07-21T03:23:09Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=What_zsoc_thinks_people_weight&amp;diff=10079</id>
		<title>What zsoc thinks people weight</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=What_zsoc_thinks_people_weight&amp;diff=10079"/>
		<updated>2010-05-27T02:35:25Z</updated>

		<summary type="html">&lt;p&gt;Prenos: New page: fat: *sbrom *oil *rick  overweight: *puff *unixpsycho  average weight: *dtzwill *bpad *egaudet *rwhitby *templarian  skinny: *ka6sox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;fat:&lt;br /&gt;
*sbrom&lt;br /&gt;
*oil&lt;br /&gt;
*rick&lt;br /&gt;
&lt;br /&gt;
overweight:&lt;br /&gt;
*puff&lt;br /&gt;
*unixpsycho&lt;br /&gt;
&lt;br /&gt;
average weight:&lt;br /&gt;
*dtzwill&lt;br /&gt;
*bpad&lt;br /&gt;
*egaudet&lt;br /&gt;
*rwhitby&lt;br /&gt;
*templarian&lt;br /&gt;
&lt;br /&gt;
skinny:&lt;br /&gt;
*ka6sox&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Autobuilder_Setup&amp;diff=10016</id>
		<title>Autobuilder Setup</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Autobuilder_Setup&amp;diff=10016"/>
		<updated>2010-05-23T03:44:48Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ubuntu 9.10 (Karmic Koala)&lt;br /&gt;
&lt;br /&gt;
* build-essential&lt;br /&gt;
* unzip&lt;br /&gt;
* sun-java6-jdk&lt;br /&gt;
* ant&lt;br /&gt;
* p7zip-full&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Zcorder_3.png&amp;diff=9813</id>
		<title>File:Zcorder 3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Zcorder_3.png&amp;diff=9813"/>
		<updated>2010-05-07T03:36:43Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Zcorder_2.png&amp;diff=9812</id>
		<title>File:Zcorder 2.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Zcorder_2.png&amp;diff=9812"/>
		<updated>2010-05-07T03:36:24Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Zcorder_1.png&amp;diff=9811</id>
		<title>File:Zcorder 1.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Zcorder_1.png&amp;diff=9811"/>
		<updated>2010-05-07T03:36:03Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Icon_WebOSInternals_zcorder.png&amp;diff=9807</id>
		<title>File:Icon WebOSInternals zcorder.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Icon_WebOSInternals_zcorder.png&amp;diff=9807"/>
		<updated>2010-05-07T01:35:17Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=File:Icon_WebOSInternals_PrecorderNew.png&amp;diff=9607</id>
		<title>File:Icon WebOSInternals PrecorderNew.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=File:Icon_WebOSInternals_PrecorderNew.png&amp;diff=9607"/>
		<updated>2010-04-18T02:14:54Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Icons&amp;diff=9606</id>
		<title>Icons</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Icons&amp;diff=9606"/>
		<updated>2010-04-18T02:13:25Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== This is a Thinking Page at the Moment ==&lt;br /&gt;
&lt;br /&gt;
Bringing the webOS-Internals ecosystem together through their icons. This is an ''optional'' suggestion being posed to those maintaining a org.webosinternals.* project. The &amp;quot;ice&amp;quot; platform will be the visual indication that an application or service is being maintained by a webOS-Internals member and is OSS.&lt;br /&gt;
&lt;br /&gt;
If you would like an icon created for an application add it to the list at the bottom of this page. Icon designs will go through a few phases of critiques before they will be finalized. During this process users will be able to see the changes on this page.&lt;br /&gt;
&lt;br /&gt;
== webOS-Internals Icons (more will be added shortly) ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_WebOSInternals_Base.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Base_Plugin.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Base_Service.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Base_Patch.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Base_Optware.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_WebOSInternals.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Box.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Box_Empty.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Box_Tux.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Terminal.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_TerminalService.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Keyboard.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Preware.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_PackageManager.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_AccelerometerService.png}}&lt;br /&gt;
{{icon|Icon_Service_LED.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Battery.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_BatteryService.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_StopLight.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_ProcessMonitor.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_ProcessService.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Upstart.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_UpstartService.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_DropBear.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_OpenSSH.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Nano.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Password.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_OpenSSL.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_ZLib.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_GNUReadlineLib.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_GnuPatchBinary.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC_Service.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC_Alert.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC_PM.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC_Invite.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_wIRC_Invite2.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Camera.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_PrecorderNew.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_CameraWIP.png}}&lt;br /&gt;
{{icon|Icon_Patch_Dangerous.png}}&lt;br /&gt;
{{icon|Icon_Patch_Deadly.png}}&lt;br /&gt;
{{icon|Icon_FreeTether.png}}&lt;br /&gt;
{{icon|Icon_MvApp.png}}&lt;br /&gt;
{{icon|Icon_Worm.png}}&lt;br /&gt;
{{icon|Icon_Tetris.png}}&lt;br /&gt;
{{icon|Icon_Asteroids.png}}&lt;br /&gt;
{{icon|Icon_SpaceInvaders.png}}&lt;br /&gt;
{{icon|Icon_PDK.png}}&lt;br /&gt;
{{icon|Icon_lighttpd.png}}&lt;br /&gt;
{{icon|Icon_OpenVPN.png}}&lt;br /&gt;
{{icon|Icon_Terminus.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_SaveRestore.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Kernel.png}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Patch Icons ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patch.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Actualpercent.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Amazonstore.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Applauncher.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Batteryandpercent.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Browser.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Calculator.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Calendar.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Camera.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Clock.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Contacts.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Devmodelauncher.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Email.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Findapps.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Luna.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Messaging.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Musicplayer.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Nascar.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Nfl.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Pandora.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Pdfviewer.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Percent.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Phone.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Phonepreferences.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Screenlock.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Smile.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Soundsandalerts.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_SprintNav.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Sprinttv.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Tasks.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Videoplayer.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Wifi.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patches_Youtube.png}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Other Icons ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_Box.png}}&lt;br /&gt;
{{icon|Icon_Box_Arrow.png}}&lt;br /&gt;
{{icon|Icon_Box_Cog.png}}&lt;br /&gt;
{{icon|Icon_Preware.png}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Alternatives ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_PrewareAlt.png}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Icons For other Applications (for reference only) ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_Reversi.png}}&lt;br /&gt;
{{icon|Icon_Airplane.png}}&lt;br /&gt;
{{icon|Icon_TheFingWeather.png}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Icons For other Services (for reference only) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Small Icons ==&lt;br /&gt;
&lt;br /&gt;
{{icon|Icon_WebOSInternals_Plugin_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Installed_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Updates_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Service_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Patch_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Tools_Small.png}}&lt;br /&gt;
{{icon|Icon_WebOSInternals_Optware_Small.png}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WebOS-Internals - Services and Applications that still need icons ==&lt;br /&gt;
&lt;br /&gt;
* GNU Patch Binary&lt;br /&gt;
&lt;br /&gt;
* JSTop&lt;br /&gt;
&lt;br /&gt;
* Upstart Manager&lt;br /&gt;
&lt;br /&gt;
== Just Talk Below ==&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=8926</id>
		<title>WebOS Internals PDK</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=WebOS_Internals_PDK&amp;diff=8926"/>
		<updated>2010-02-04T23:29:19Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: SDL]]&lt;br /&gt;
Palm's binary sdk  the &amp;quot;Plugin Developer Kit&amp;quot; will not be available until March 2010.&lt;br /&gt;
&lt;br /&gt;
In the mean time, WebOS Internals has released a full &amp;quot;PDK&amp;quot; for you using Scratchbox2.  &lt;br /&gt;
&lt;br /&gt;
We ''strongly'' urge the community to standardize on this PDK until Palm releases theirs.   We believe that it uses the same underlying technologies, and that it will give you both a means to port games now, and a head-start to development against the official Palm PDK in the future.&lt;br /&gt;
&lt;br /&gt;
Scratchbox 2 is a cross-compilation engine, it can be used to create a highly flexible SDK.&lt;br /&gt;
&lt;br /&gt;
As installed below, the install process uses a script which extracts the required Palm provided files from a copy of webos doctor, and  downloads from other sources, and builds a complete compilation environment automatically which can compile SDL and openGLES apps for webOS.  &lt;br /&gt;
&lt;br /&gt;
SB2 ''itself'' is totally distribution neutral but the webOS cross-compile environment is designed and tested on Ubuntu 9.10 32 bit. (At least one user in #webos-internals reports complete success running the cross compile environment in Ubuntu 9.10 64 bit after installing curl via apt-get.) &lt;br /&gt;
&lt;br /&gt;
The webOS Internals team ''strongly suggest'' apt-get install into that environment only for this purpose. The same installation of Sun Virtualbox which hosts the Palm SDK emulator can host an Ubuntu 9.10 server with very little effort. &lt;br /&gt;
&lt;br /&gt;
==SB2 Homepage==&lt;br /&gt;
[http://www.freedesktop.org/wiki/Software/sbox2 http://www.freedesktop.org/wiki/Software/sbox2]pdk&lt;br /&gt;
&lt;br /&gt;
==License==&lt;br /&gt;
Scratchbox 2 is distributed under LGPL version 2.1, portions are under GPL version 2. Some minor stuff is under MIT style license.&lt;br /&gt;
&lt;br /&gt;
== Installation on Ubuntu for WebOS PDK cross compiling ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; clear:right; width:30%&amp;quot;&amp;gt;{{Ubuntu_VM_notes_for_Windows_users}}&amp;lt;/div&amp;gt;&lt;br /&gt;
===Prequisites===&lt;br /&gt;
Your Ubuntu installation will need the following installed.  If you do not have them, run the command after the package name. You can test if they are found by just typing the command name.  If it says command not found, you need to install it. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ &lt;br /&gt;
|'''git''' || sudo apt-get install git-core&lt;br /&gt;
|-&lt;br /&gt;
|'''gcc''' || sudo apt-get install build-essential&lt;br /&gt;
|-&lt;br /&gt;
|'''curl''' || sudo apt-get install curl&lt;br /&gt;
|-&lt;br /&gt;
|'''unzip'''|| sudo apt-get install unzip&lt;br /&gt;
|-&lt;br /&gt;
|'''autoconf'''|| sudo apt-get install autoconf&lt;br /&gt;
|-&lt;br /&gt;
|'''subversion'''|| sudo apt-get install subversion&lt;br /&gt;
|-&lt;br /&gt;
|'''libtool'''|| sudo apt-get install libtool&lt;br /&gt;
|-&lt;br /&gt;
|'''wget'''|| sudo apt-get install wget&lt;br /&gt;
|-&lt;br /&gt;
|'''pkg-config'''|| sudo apt-get install pkg-config&lt;br /&gt;
|-&lt;br /&gt;
|'''gettext'''|| sudo apt-get install gettext&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you're uncertain at all, just cut and paste the following.  If they are already installed, they'll be skipped.  &lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install git-core build-essential curl unzip autoconf subversion libtool wget pkg-config gettext&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The ''make toolchain'' command and later steps will download approximately a half-gig of tools and sources from various locations.  Do not start this if you do not have time for a large download.  Additionally, if you already have downloaded a copy of the WebOS 1.3.5 doctor, you can reduce the download time by copying the doctor file into cross-compile/doctors/webosdoctorp100ewwsprint-1.3.5.jar .  This will cause the appropriate command to skip that download.  Note that codesourcery rate limts downloads and at a minimum this process will take 10 to 15 minutes irrespective of your connection speed. &lt;br /&gt;
&lt;br /&gt;
====Start setup====&lt;br /&gt;
Create a preware folder, copy the cross-compile tools into it (if you have not installed git, apt-get install git-core), and use a make script to begin the set up of the compilation toolchain. &lt;br /&gt;
&lt;br /&gt;
 sudo mkdir -p /srv/preware&lt;br /&gt;
 cd /srv/preware&lt;br /&gt;
 sudo chmod 777 .&lt;br /&gt;
 git clone git://git.webos-internals.org/preware/cross-compile.git&lt;br /&gt;
 cd cross-compile&lt;br /&gt;
 make toolchain&lt;br /&gt;
&lt;br /&gt;
====Fix mmap errors====&lt;br /&gt;
The following commands appear redundant.  They are not.  The install this fixes your mmap config to fix an mmap: permission denied error, but we don't need the package itself.&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install qemu-arm-static&lt;br /&gt;
 sudo apt-get remove qemu-arm-static&lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;OR&amp;lt;/span&amp;gt; As a workaround, if this package is not available, &lt;br /&gt;
::: the following commands can be executed in a root shell (sudo -s) to fix the mmap configuration to enable qemu-arm to work.&lt;br /&gt;
&lt;br /&gt;
 echo &amp;quot;vm.mmap_min_addr = 4096&amp;quot; &amp;gt; /etc/sysctl.d/mmap_min_addr.conf&lt;br /&gt;
 /etc/init.d/procps restart&lt;br /&gt;
&lt;br /&gt;
(note that the value should not be &amp;quot;0&amp;quot;. 4096 is chosen to avoid null pointer attacks.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Setup Scratchbox====&lt;br /&gt;
Now, use apt-get to setup scratchbox...&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install scratchbox2 qemu-kvm-extras&lt;br /&gt;
&lt;br /&gt;
...and set it up for compiling for webOS. &lt;br /&gt;
&lt;br /&gt;
 cd /srv/preware/cross-compile/toolchain/arm-2007q3/arm-none-linux-gnueabi/libc&lt;br /&gt;
 PATH=/srv/preware/cross-compile/toolchain/arm-2007q3/bin:${PATH} sb2-init -c /usr/bin/qemu-arm armv7 arm-none-linux-gnueabi-gcc&lt;br /&gt;
 cd /srv/preware/cross-compile&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
&lt;br /&gt;
 make stage&lt;br /&gt;
&lt;br /&gt;
Once this setup is complete, compiling sdl apps for webOS is very simple.&lt;br /&gt;
&lt;br /&gt;
==Sample build of [[Application:ScummVM]]==&lt;br /&gt;
&lt;br /&gt;
Go here for simple instructions of how to build ScummVM [[Application:ScummVM#Building_ScummVM]]&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Talk:Theme_Management_API&amp;diff=8784</id>
		<title>Talk:Theme Management API</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Talk:Theme_Management_API&amp;diff=8784"/>
		<updated>2010-01-31T03:50:22Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The original idea is a bit lacking with regards to file path restrictions.  If we are going to create a legit Theme API, we should do it right and start off with an easy to read and create config file.  Let's discuss what this should look like&lt;br /&gt;
&lt;br /&gt;
=== Theme API Config File ===&lt;br /&gt;
==== egaudet ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
launcherIcons:&lt;br /&gt;
{&lt;br /&gt;
  appid: { icon = relative/path/to/icon };&lt;br /&gt;
  appid: { icon = relative/path/to/icon };&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== PuffTheMagic ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
launcherIcons:&lt;br /&gt;
{&lt;br /&gt;
  com.palm.package1 = relative/path/to/icon1;&lt;br /&gt;
  com.palm.package2 = relative/path/to/icon2;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== zsoc ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HOW DID THIS GET HERE I AM NOT GOOD WITH COMPUTER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Theme_Management_API&amp;diff=8766</id>
		<title>Theme Management API</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Theme_Management_API&amp;diff=8766"/>
		<updated>2010-01-29T22:34:02Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Theme Management API ==&lt;br /&gt;
&lt;br /&gt;
This is an initial attempt at hashing out a secure, reliable Theme Management API.  One of the main goals is to modify as little as we can of stock Palm files.  &lt;br /&gt;
 &lt;br /&gt;
# Create a new theme folder in /media/internal/.themes/thisTheme/ &lt;br /&gt;
# Create a new themeinfo.json file in that folder which contains the following:  &lt;br /&gt;
#* Themename: Display name for theme&lt;br /&gt;
#* themedesc: quoted text of html for description of theme &lt;br /&gt;
#* themethumb1:  filename of thumbnail image 1 for theme &lt;br /&gt;
#* themethumb2:  ditto image 2 &lt;br /&gt;
#* themethumb3:  ditto image 3 &lt;br /&gt;
#* themeauthor: author name &lt;br /&gt;
#* themehome: URL of homepage for this theme &lt;br /&gt;
#* themeversion: version number &lt;br /&gt;
# In that new folder, place a file for each image that you intend to theme. &lt;br /&gt;
#: The new file must be placed in the exact same relative path as before... that is to say, if the file was previously at /usr/palm/images/1.png  then the new file must be at /media/internals/.themes/thisTheme/usr/palm/images/1.png &lt;br /&gt;
#: The new file must have the same name, and be of the same type as the original file.&lt;br /&gt;
# The themer must include a file for each CSS file that he wants to theme... &lt;br /&gt;
#: If the css file being overridden is an application css, it must be placed in the exact same relative path as it would have been in the application.  &lt;br /&gt;
#:: If the original application was /usr/palm/applications/phone/stylesheets/phone.css  the theming css must be in /media/internals/.themes/thisTheme//usr/palm/applications/phone/stylesheets/theme.css&lt;br /&gt;
#:: the theming file must ALWAYS be called &amp;quot;theme.css&amp;quot;&lt;br /&gt;
# If you are overriding one of the palm global stylesheets they must be placed in the correct place as well.  /usr/palm/framework/stylesheets  and be named  themeXXXXX.css where XXXXX is the global stylesheet being overridden. &lt;br /&gt;
# In your theme override stylesheets references to your images that override the default images should refer to /var/activetheme/... not to /media/internals/.theme/mytheme  &lt;br /&gt;
# When your theme is chosen as the active theme, the system will symlink YOUR theme directory to /var/activetheme.&lt;br /&gt;
&lt;br /&gt;
A one-time patch will be made against the framework files in /user/palm/framework which will add loading themeXXX.css after each reference to XXXXX.css and which will modify launcher so that when an application is loaded,  after appname.css is loaded, theme.css will be loaded from /var/activetheme -- matching CSS classes from those files will then automatically override the previous ones from the defaults.&lt;br /&gt;
&lt;br /&gt;
==Writing the theming css files== &lt;br /&gt;
&lt;br /&gt;
Theming css files must be &amp;quot;sparse&amp;quot; that is, they ONLY contain the classes being overridden not the entire global css file.  So, if for example you are overriding the &amp;quot;button_one&amp;quot; class in the phone application css,  your theme.css in /thisTheme would be /usr/palm/applications/phone/stylesheets/theme.css  and would contain ONE class &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{button_one: &lt;br /&gt;
   background-image: /var/activetheme/yadayadayada/1.png&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''NOTE NOTE NOTE -- I know that's wrong -- I'm trying to get an Idea out here ok? '''&lt;br /&gt;
&lt;br /&gt;
==Theme Management app==&lt;br /&gt;
* The theme management app iterates the folders in /media/internals/.themes and comes up with a list of themes folders in there. &lt;br /&gt;
* It then opens each of the themeinfo.json files and displays a list of the available themes. &lt;br /&gt;
* Upon tapping on a theme name a descriptive page (stolen from preware) comes up and displays the thumbnails and description and otherdata with an INSTALL button &lt;br /&gt;
* Upon pressing install, the theme app's service symlinks /media/internal/.themes/chosenTheme to /var/activetheme &lt;br /&gt;
*: '''(is a luna restart required at that point?) ''' &amp;lt;-- no :&amp;gt;&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7421</id>
		<title>Application talk:Precorder</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7421"/>
		<updated>2009-11-25T14:45:12Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Page Layout ==&lt;br /&gt;
&lt;br /&gt;
Please place all comments under the appropriate category.  If you would like a feature that has already been requested then just add your signature by placing two asterisks and four tilde's &amp;lt;nowiki&amp;gt;**~~~~&amp;lt;/nowiki&amp;gt; on the line underneath.  It will show up like this.&lt;br /&gt;
&lt;br /&gt;
*Here is a feature request that I will add my signature to.&lt;br /&gt;
**[[User:Cryptk|Cryptk]] 19:06, 24 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please remember to sign all new entries with four tildes &amp;lt;nowiki&amp;gt;~~~~&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I know this is alpha but I want ppl to put their opinions/observations.&lt;br /&gt;
&lt;br /&gt;
== Bug Reports ==&lt;br /&gt;
&lt;br /&gt;
* The sound quality is very low --[[User:En0x|en0x]] 14:31, 24 November 2009 (UTC)&lt;br /&gt;
** Microphone is on the opposite side of the camera. Narration from user isn't too bad. Sound is better with playback on computer. Looking into ways to stage a temperary alsa config to boost mic, or level it through a 3rd utility which would require another service --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Both the video only and audio only options produce only audio.--[[User:Gkatsev|Gkatsev]] 16:05, 24 November 2009 (UTC)&lt;br /&gt;
** Problem noted, on the map --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Sound is only heard in the left channel --[[User:Gryn|Gryn]] 22:39, 24 November 2009 (UTC)&lt;br /&gt;
** This fix would probably also require a 3rd service/utility --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Recorded file does not save to device if app is closed before completion. [[User:Bdubdrum|Bdubdrum]] 07:47, 25 November 2009 (UTC)&lt;br /&gt;
** The app closing itself does not kill the program. Not hitting the &amp;quot;stop&amp;quot; button can actually disturb the normal camd service function. This is actually dangerous to the services running on the phone. All reports of phones crashing or needed to be reset (or camera not functioning) were a result of this flow. I am working on adding a killswitch to closing the app (or letting the user presuppose the video length) --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* App saves files &amp;quot;when it wants to&amp;quot; further testing needed --[[User:Gryn|Gryn]] 12:30, 25 November 2009 (UTC)&lt;br /&gt;
** This problem is directly related to the lack of feedback between the pipeline, the service, and the app. This will eventually be resolved once the output and errors get properly filtered down, and it may not happen til/unless the service is converted to C. --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Recording with flash on forces recording to end around 7 seconds in --[[User:Gryn|Gryn]] 12:30, 25 November 2009 (UTC)&lt;br /&gt;
** I have heard no other reports of this problem. If it continues, please see me (zsoc) in #webos-internals for debugging. --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Feature Requests ==&lt;br /&gt;
&lt;br /&gt;
* I would like to have Record New moved to the bottom... It's hard to tap it when you have slider open --[[User:En0x|en0x]] 14:21, 24 November 2009 (UTC)&lt;br /&gt;
** done --[[User:Prenos|Prenos]] 17:17, 24 November 2009 (UTC)&lt;br /&gt;
* Add option to launch video app from precorder --[[User:En0x|en0x]] 17:04, 24 November 2009 (UTC)&lt;br /&gt;
**--[[User:Gryn|Gryn]] 22:37, 24 November 2009 (UTC)&lt;br /&gt;
*** This is already implemented, will be released in next version --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Way to show how many minutes I recorded? in precorder --[[User:En0x|en0x]] 17:15, 24 November 2009 (UTC)&lt;br /&gt;
     I have a count up timer planned --[[User:Prenos|Prenos]] 17:18, 24 November 2009 (UTC)&lt;br /&gt;
* Flash toggle on main scene? --[[User:En0x|en0x]] 17:21, 24 November 2009 (UTC)&lt;br /&gt;
** I looked into this. The whole graphical UI is changing in the next version. This might be a future option still tho --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Have it show the estimated video recording time remaining based on free space in the /media/internal --[[User:Cryptk|Cryptk]] 18:45, 24 November 2009 (UTC)&lt;br /&gt;
**--[[User:ProfJonathan|ProfJonathan]] 19:50, 24 November 2009 (UTC)&lt;br /&gt;
*** This isn't practical for a number of reasons, but I'll see if someone else wants to implement it --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Use space on keyboard to start/stop recording --[[User:En0x|en0x]] 19:34, 24 November 2009 (UTC)&lt;br /&gt;
**--[[User:ProfJonathan|ProfJonathan]] 19:50, 24 November 2009 (UTC)&lt;br /&gt;
*** This is feasable, will consider implemented an API for this option --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
*MP3 audio-only recording, for creating podcasts --[[User:ProfJonathan|ProfJonathan]] 19:52, 24 November 2009 (UTC)&lt;br /&gt;
** This will require a minor overhaul of the general video start request, or a new request method. It will be an available option if technically feasable once beta hits --[[User:Prenos|Prenos]] 14:45, 25 November 2009 (UTC)&lt;br /&gt;
* Allow user to see what is being recorded just like the camera application where you can see the picture being taken. --[[User:thatdude|thatdude]] 00:04 25 November 2009 (EST)&lt;br /&gt;
** Consider this impossible for the moment. Look for version 1.0.0 of Precorder or wait till palm releases their app&lt;br /&gt;
* If possible have the interface (main scene) look like the camera application where the bottom left icon would open the video application as a new card, the middle button would start/stop recording, and the right button would turn on the flash on/off on the fly. --[[User:thatdude|thatdude]] 00:08 25 November 2009 (EST)&lt;br /&gt;
* Progress bar or indicator for remaining time of file save. Currently, if user starts another recording session or closes app the file is lost. [[User:Bdubdrum|Bdubdrum]] 07:50, 25 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7365</id>
		<title>Application talk:Precorder</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7365"/>
		<updated>2009-11-24T17:18:10Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I know this is alpha but I want ppl to put their opinions/observations.&lt;br /&gt;
&lt;br /&gt;
* I would like to have Record New moved to the bottom... It's hard to tap it when you have slider open --[[User:En0x|en0x]] 14:21, 24 November 2009 (UTC)&lt;br /&gt;
     This was the original design, rod mucked up the css somewhere in the packaging process ;) --[[User:Prenos|Prenos]] 17:17, 24 November 2009 (UTC)&lt;br /&gt;
* The sound quality is very low --[[User:En0x|en0x]] 14:31, 24 November 2009 (UTC)&lt;br /&gt;
* Both the video only and audio only options produce only audio. [[User:Gkatsev|Gkatsev]] 16:05, 24 November 2009 (UTC)&lt;br /&gt;
* Add option to launch video app from precorder --[[User:En0x|en0x]] 17:04, 24 November 2009 (UTC)&lt;br /&gt;
* Way to show how many minutes i recorded? in precorder --[[User:En0x|en0x]] 17:15, 24 November 2009 (UTC)&lt;br /&gt;
     I have a count up timer planned --[[User:Prenos|Prenos]] 17:18, 24 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7364</id>
		<title>Application talk:Precorder</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application_talk:Precorder&amp;diff=7364"/>
		<updated>2009-11-24T17:17:32Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I know this is alpha but I want ppl to put their opinions/observations.&lt;br /&gt;
&lt;br /&gt;
* I would like to have Record New moved to the bottom... It's hard to tap it when you have slider open --[[User:En0x|en0x]] 14:21, 24 November 2009 (UTC)&lt;br /&gt;
     This was the original design, rod mucked up the css somewhere in the packaging process ;) --[[User:Prenos|Prenos]] 17:17, 24 November 2009 (UTC)&lt;br /&gt;
* The sound quality is very low --[[User:En0x|en0x]] 14:31, 24 November 2009 (UTC)&lt;br /&gt;
* Both the video only and audio only options produce only audio. [[User:Gkatsev|Gkatsev]] 16:05, 24 November 2009 (UTC)&lt;br /&gt;
* Add option to launch video app from precorder --[[User:En0x|en0x]] 17:04, 24 November 2009 (UTC)&lt;br /&gt;
* Way to show how many minutes i recorded? in precorder --[[User:En0x|en0x]] 17:15, 24 November 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application:Precorder&amp;diff=7336</id>
		<title>Application:Precorder</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application:Precorder&amp;diff=7336"/>
		<updated>2009-11-24T07:22:44Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{application&lt;br /&gt;
|name=Precorder&lt;br /&gt;
|type=webOS&lt;br /&gt;
|version=Version: Alpha 0.2.0 &amp;lt;br /&amp;gt;(23 Nov 2009)&lt;br /&gt;
|tag=Utilities&lt;br /&gt;
|screenshot=Precorder_2009-24-11_164136.png&lt;br /&gt;
|description=&lt;br /&gt;
&lt;br /&gt;
== Summary == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating notes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recent enhancements ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Known bugs ===&lt;br /&gt;
First run on any phone will cause a blank output. Simply start recording, wait a moment, and stop recording, wait a moment. After that, it should be fine. Getting the video light to work may cause 2 starts. Should be a 1-time-only process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
Source at git.webos-internals.org&lt;br /&gt;
&lt;br /&gt;
Packages in the webos-internals testing feed&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Precorder_2009-24-11_164136.png]]&lt;br /&gt;
[[Image:Precorder_2009-24-11_164140.png]]&lt;br /&gt;
[[Image:Precorder_2009-24-11_164128.png]]&lt;br /&gt;
[[Image:Launcher_2009-24-11_164206.png]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Application:Precorder&amp;diff=7335</id>
		<title>Application:Precorder</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Application:Precorder&amp;diff=7335"/>
		<updated>2009-11-24T07:19:25Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{application&lt;br /&gt;
|name=Precorder&lt;br /&gt;
|type=webOS&lt;br /&gt;
|version=Version: Alpha 0.2.0 &amp;lt;br /&amp;gt;(23 Nov 2009)&lt;br /&gt;
|tag=Utilities&lt;br /&gt;
|screenshot=Precorder_2009-24-11_164136.png&lt;br /&gt;
|description=&lt;br /&gt;
&lt;br /&gt;
== Summary == &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Installation==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Operating notes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Recent enhancements ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Known bugs ===&lt;br /&gt;
First run on any phone will cause a blank output. Simple start recording, wait a moment, and stop recording, wait a moment. After that, it should be fine. Getting the video light to work may cause 2 starts. Should be a 1-time-only process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Source Code ==&lt;br /&gt;
&lt;br /&gt;
Source at git.webos-internals.org&lt;br /&gt;
&lt;br /&gt;
Packages in the webos-internals testing feed&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Precorder_2009-24-11_164136.png]]&lt;br /&gt;
[[Image:Precorder_2009-24-11_164140.png]]&lt;br /&gt;
[[Image:Precorder_2009-24-11_164128.png]]&lt;br /&gt;
[[Image:Launcher_2009-24-11_164206.png]]&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6291</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6291"/>
		<updated>2009-10-06T15:17:01Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt; '''UPDATE''': sending an INT signal seems to work? not sure if I'm missing something here... --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?) '''UPDATE''': this seems semi-posible, as there are supported gstreamer elements that could &amp;quot;tee&amp;quot; the pipeline to 2 locations, unfortunately a custom app using palmvideosink seems unlikely as it's locked up in MediaServer --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.) Get Videos app to display recorded video files (if anyone knows why the doesn't work now, please add it here, because it should work but it doesn't) '''UPDATE''': This definitely SHOULDN'T work. You're piping a RAW h264 bitstream to a file with no container. Honestly I'm suprised it plays back in totem/smplayer. My only guess is they somehow contain them during stream. I'm working on backporting qtmux, as it's the only viable solution I've come up with that would be compatible with Pre's environment --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink? '''UPDATE''': I'm thinking theoraenc and net2stream to an icecast server. 2 way probably isn't possible, i suppose this would be more 'http video streaming' than conferencing --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l2 drivers as well as their patch to compile the camsrc plugin on their opensource website). There's also a comment in palmInitMedia.js that the driver only supports up to 480x320, but v4l2 is documented to handle higher resolutions. Will also requre installing another video encoder. --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC) '''UPDATE''': this seems to be infeasble due to memory limitations, tons of segfaults and things. might have to do some serious buffering and framerate adjustments to get this to work. Will try with more efficient encoders --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6289</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6289"/>
		<updated>2009-10-06T15:15:59Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt; '''UPDATE''': sending an INT signal seems to work? not sure if I'm missing something here... --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?) '''UPDATE''': this seems semi-posible, as there are supported gstreamer elements that could &amp;quot;tee&amp;quot; the pipeline to 2 locations, unfortunately a custom app using palmvideosink seems unlikely as it's locked up in MediaServer --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.) Get Videos app to display recorded video files (if anyone knows why the doesn't work now, please add it here, because it should work but it doesn't)&amp;lt;br&amp;gt; '''UPDATE''': This definitely SHOULDN'T work. You're piping a RAW h264 bitstream to a file with no container. Honestly I'm suprised it plays back in totem/smplayer. My only guess is they somehow contain them during stream. I'm working on backporting qtmux, as it's the only viable solution I've come up with that would be compatible with Pre's environment --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt; '''UPDATE''': I'm thinking theoraenc and net2stream to an icecast server. 2 way probably isn't possible, i suppose this would be more 'http video streaming' than conferencing --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l2 drivers as well as their patch to compile the camsrc plugin on their opensource website). There's also a comment in palmInitMedia.js that the driver only supports up to 480x320, but v4l2 is documented to handle higher resolutions. Will also requre installing another video encoder. --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC) '''UPDATE''': this seems to be infeasble due to memory limitations, tons of segfaults and things. might have to do some serious buffering and framerate adjustments to get this to work. Will try with more efficient encoders --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6288</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=6288"/>
		<updated>2009-10-06T15:14:57Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt; UPDATE: sending an INT signal seems to work? not sure if I'm missing something here... --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?) UPDATE: this seems semi-posible, as there are supported gstreamer elements that could &amp;quot;tee&amp;quot; the pipeline to 2 locations, unfortunately a custom app using palmvideosink seems unlikely as it's locked up in MediaServer --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4.) Get Videos app to display recorded video files (if anyone knows why the doesn't work now, please add it here, because it should work but it doesn't)&amp;lt;br&amp;gt; UPDATE: This definitely SHOULDN'T work. You're piping a RAW h264 bitstream to a file with no container. Honestly I'm suprised it plays back in totem/smplayer. My only guess is they somehow contain them during stream. I'm working on backporting qtmux, as it's the only viable solution I've come up with that would be compatible with Pre's environment --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt; UPDATE: I'm thinking theoraenc and net2stream to an icecast server. 2 way probably isn't possible, i suppose this would be more 'http video streaming' than conferencing --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l2 drivers as well as their patch to compile the camsrc plugin on their opensource website). There's also a comment in palmInitMedia.js that the driver only supports up to 480x320, but v4l2 is documented to handle higher resolutions. Will also requre installing another video encoder. --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC) UPDATE: this seems to be infeasble due to memory limitations, tons of segfaults and things. might have to do some serious buffering and framerate adjustments to get this to work. Will try with more efficient encoders --[[User:Prenos|Prenos]] 15:14, 6 October 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=6284</id>
		<title>Gstreamer</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=6284"/>
		<updated>2009-10-06T14:29:29Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gstreamer as installed on the Pre is version 0.10.21, along with a patch. The patch seems to do minor error handling, along with registry adjustment. The registry in Gstreamer is used to &amp;quot;install&amp;quot; new plugins that are added to the library (plugins are generally located in /usr/lib/gstreamer-0.10/). As of Gstreamer version 0.10, this is an automated service, no user entry is neccesary to update plugins. In fact, each time &amp;quot;gst-inspect&amp;quot; is ran, plugins should update automatically. For an unknown reason, Palm has decided to edit it in such a way that this is no longer the case. One theory is that Palm-built plugins were not registering correctly, so they adjusted the mechanism of the gst registry. Palm did include, however, a script to force registering manually. This is located in /usr/bin/PmMediaGstBinRegistryApp (credit to ajames for discovering this functionality).&lt;br /&gt;
&lt;br /&gt;
Many possibilities, including alternative audio and video filetype support (encoding and decoding), as well as video and audio streaming with the Pre as the source (icecast, etc) exist. It should even be possible to create an app to encode or recode various types of audio/video files into other formats, right on your phone.&lt;br /&gt;
&lt;br /&gt;
To build working (registerable) plugins, it seems you must have a very specific compiling environment that is compatible with the Pre's native environment. The same applies whether you are on an arm host or have a cross compiling environment. The following are libraries or applications that are found to be compatible with the Pre's native runtime environment. glibc 2.5 (2.6.1 however is confirmed to work for the majority of applications, 2.7 fails on gst plugin registering), glib 2.14.4 (2.0-14.4), gstreamer 0.10.21, base 0.10.21, bad 0.10.9, liboil &amp;gt;0.3.8&lt;br /&gt;
&lt;br /&gt;
Additional information can be found at the [[VideoRecording]] wiki page.&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5595</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5595"/>
		<updated>2009-09-09T17:10:33Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files (if anyone knows why the doesn't work now, please add it here, because it should work but it doesn't)&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l2 drivers as well as their patch to compile the camsrc plugin on their opensource website). There's also a comment in palmInitMedia.js that the driver only supports up to 480x320, but v4l2 is documented to handle higher resolutions. Will also requre installing another video encoder. --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5594</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5594"/>
		<updated>2009-09-09T17:07:17Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files (if anyone knows why the doesn't work now, please add it here, because it should work but it doesn't)&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l drivers as well as their patch to compile the camsrc plugin on their opensource website). Will probably also requre installing another video encoder. Little information is available about the proprietary 'palmvideoencoder' that I can find --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5591</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5591"/>
		<updated>2009-09-09T17:03:36Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly) (probably will involve invoking a custom service)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l drivers as well as their patch to compile the camsrc plugin on their opensource website). Will probably also requre installing another video encoder. Little information is available about the proprietary 'palmvideoencoder' that I can find --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5586</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=5586"/>
		<updated>2009-09-09T16:59:39Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
Note: Current versions of Prelease available through webOS QuickInstall and Preware no longer support the exploit to pass abritrary code, so this shouldn't work --[[User:Prenos|Prenos]] 16:59, 9 September 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l drivers as well as their patch to compile the camsrc plugin on their opensource website). Will probably also requre installing another video encoder. Little information is available about the proprietary 'palmvideoencoder' that I can find --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=5584</id>
		<title>Gstreamer</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=5584"/>
		<updated>2009-09-09T16:28:26Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gstreamer as installed on the Pre is version 0.10.21, along with a patch. The patch seems to do minor error handling, along with registry adjustment. The registry in Gstreamer is used to &amp;quot;install&amp;quot; new plugins that are added to the library (plugins are generally located in /usr/lib/gstreamer-0.10/). As of Gstreamer version 0.10, this is an automated service, no user entry is neccesary to update plugins. In fact, each time &amp;quot;gst-inspect&amp;quot; is ran, plugins should update automatically. For an unknown reason, Palm has decided to edit it in such a way that this is no longer the case. One theory is that Palm-built plugins were not registering correctly, so they adjusted the mechanism of the gst registry. Work is currently underway (by ajames) to either edit the existing system, or create an alternate work around. This should allow developers to build and &amp;quot;install&amp;quot; plugins (and elements within) that are compatible with gstreamer.&lt;br /&gt;
&lt;br /&gt;
Once the community gets a working gstreamer plugin environment, it opens up many possibilities, including alternative audio and video filetype support (encoding and decoding), as well as video and audio streaming with the Pre as the source (icecast, etc). It should even be possible to create an app to encode or recode various types of audio/video files into other formats, right on your phone.&lt;br /&gt;
&lt;br /&gt;
Additional information can be found at the [[VideoRecording]] wiki page.&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=5583</id>
		<title>Gstreamer</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Gstreamer&amp;diff=5583"/>
		<updated>2009-09-09T16:16:28Z</updated>

		<summary type="html">&lt;p&gt;Prenos: New page: Gstreamer as installed on the Pre is version 0.10.21, along with a patch. The patch seems to do minor error handling, along with registry adjustment. The registry in Gstreamer is used to &amp;quot;...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Gstreamer as installed on the Pre is version 0.10.21, along with a patch. The patch seems to do minor error handling, along with registry adjustment. The registry in Gstreamer is used to &amp;quot;install&amp;quot; new plugins that are added to the library (plugins are generally located in /usr/lib/gstreamer-0.10/). As of Gstreamer version 0.10, this is an automated service, no user entry is neccesary to update plugins. In fact, each time &amp;quot;gst-inspect&amp;quot; is ran, plugins should update automatically. For an unknown reason, Palm has decided to edit it in such a way that this is no longer the case. One theory is that Palm-built plugins were not registering correctly, so they adjusted the mechanism of the gst registry. Work is currently underway (by ajames) to either edit the existing system, or create an alternate work around. This should allow developers to build and &amp;quot;install&amp;quot; plugins (and elements within) that are compatible with gstreamer.&lt;br /&gt;
&lt;br /&gt;
Once the community gets a working gstreamer plugin environment, it opens up many possibilities, including alternative audio and video filetype support (encoding and decoding), as well as video and audio streaming with the Pre as the source (icecast, etc). It should even be possible to create an app to encode or recode various types of audio/video files into other formats, right on your phone.&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Portal:Research&amp;diff=5582</id>
		<title>Portal:Research</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Portal:Research&amp;diff=5582"/>
		<updated>2009-09-09T15:57:32Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
{{portal-header|&lt;br /&gt;
The Research Portal is for bleeding edge things being done with the device. &lt;br /&gt;
&lt;br /&gt;
Title all pages: '''Research [description]''' or '''Reference [description]'''&lt;br /&gt;
}}&lt;br /&gt;
{{portal-two-columns&lt;br /&gt;
|column1=&lt;br /&gt;
===Research:===&lt;br /&gt;
&lt;br /&gt;
* [[Applications Bundled on the Pre]]&lt;br /&gt;
* [[Application_Framework|Application Framework]]&lt;br /&gt;
* [[Blocking Updates]]&lt;br /&gt;
* [[New Bluetooth|BlueZ (Replacing Palm Bluetooth)]]&lt;br /&gt;
* [[Boot_Chain|Boot Chain]]&lt;br /&gt;
* [[Bootie]]&lt;br /&gt;
* [[ClassicFilesystem]]&lt;br /&gt;
* [[Decrypt SSL (trusted man-in-the-middle technique)|Decrypt SSL (trusted man-in-the-middle technique)]]&lt;br /&gt;
* [[Fonts available on board the Pre]]&lt;br /&gt;
* [[Gstreamer]]&lt;br /&gt;
* [[Hidd]]&lt;br /&gt;
* [[Introspecting_Dbus|Introspecting Dbus]]&lt;br /&gt;
* [[Key Codes|Key Codes]] &lt;br /&gt;
* [[Pre Specific Hash Codes|Pre Specific Hash Codes]] &lt;br /&gt;
* [[Pictures from Self-Test|Pictures from Self-Test]] &lt;br /&gt;
* [[Restore Debug Log|Restore Debug Log]] &lt;br /&gt;
* [[Reverse_Engineering_WebOS_Doctor|Reverse Engineering WebOS Doctor]]&lt;br /&gt;
* [[Rooted Pre Issues|Rooted Pre Issues]] &lt;br /&gt;
* [[Running Processes|Running Processes]] &lt;br /&gt;
* [[Symlink Applications|Symlink Applications]] &lt;br /&gt;
* [[System Sounds|System Sounds]] &lt;br /&gt;
* [[TestApps|TestApps]] &lt;br /&gt;
* [[Update Service Trace|Update Service Trace]] &lt;br /&gt;
* [[Tidbits|Tidbits]] &lt;br /&gt;
* [[VideoRecording]]&lt;br /&gt;
* [[WebOS Exploration - Various Information|WebOS Exploration - Various Information]] &lt;br /&gt;
&lt;br /&gt;
|column2=&lt;br /&gt;
===Reference===&lt;br /&gt;
* [[Packaging Standards|Packaging Standards]]&lt;br /&gt;
* [[webkit_transform|Webkit Transform]]- a powerful set of commands for manipulating elements.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/"/>
		<updated>2009-09-09T15:50:40Z</updated>

		<summary type="html">&lt;p&gt;Prenos: mis-use of 'brick' was erking me, feel free to adjust verbage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__notoc__&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Welcome is in the Template&lt;br /&gt;
Disclaimer is in the Template&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{page-main&lt;br /&gt;
|cell-1-1=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Favorites.png|Getting Started|48|Portal:Where to Get Started}}&lt;br /&gt;
 |title=[[Portal:Where to Get Started|Getting Started]]&lt;br /&gt;
 |description=Various paths to start enhancing and understanding your Pre.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-2-1=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Tux_with_Pre.png|Linux Applications|48|Portal:Linux_Applications}}&lt;br /&gt;
 |title=[[Portal:Linux_Applications|Linux Apps &amp;amp; Tutorials]]&lt;br /&gt;
 |description=The entire catalog of Optware packages is available on the Pre.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-3-1=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Preferences-plugin-script.png|Development Tools|48|Source Patches}}&lt;br /&gt;
 |title=[[Portal:Patches to webOS|Source Patches]]&lt;br /&gt;
 |description=Get patches for Mojo apps to add functionality and expose hidden features.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-1-2=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Tux_with_Pre_and_Screwdriver.png|Development Tools|48|Portal:Accessing Linux}}&lt;br /&gt;
 |title=[[Portal:Accessing Linux|Accessing Linux]]&lt;br /&gt;
 |description=Get information on Accessing Linux.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-2-2=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:WebOS.png|Webos Applications|48|Portal:webOS_Applications}}&lt;br /&gt;
 |title=[[Portal:webOS_Applications|webOS Apps &amp;amp; Tutorials]]&lt;br /&gt;
 |description=Check out the homebrew apps made by our users and affiliates.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-3-2=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Icon-hardware.png|Hardware Information|48|Portal:Hardware}}&lt;br /&gt;
 |title=[[Portal:Hardware|Hardware Information]]&lt;br /&gt;
 |description=Interested in the inner workings of the device? Check it out.&lt;br /&gt;
  }}&lt;br /&gt;
|cell-1-3=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Applications-development.png|Development Tools|48}}&lt;br /&gt;
 |title=[[Portal:Tools|Development Tools]]&lt;br /&gt;
 |description=Get information on toolchains, cross-compiling, kernels and more.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-2-3=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Icon-document.png|Development Tools|48|Portal:SDK}}&lt;br /&gt;
 |title=[[Portal:SDK|SDK Documentation]]&lt;br /&gt;
 |description=Need help with something? Looking for a tutorial? Find it here.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-3-3=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Scientux.png|Research|48|Portal:Research}}&lt;br /&gt;
 |title=[[Portal:Research|Research &amp;amp; Reference]]&lt;br /&gt;
 |description=Bleeding edge research of the device, with reference links.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-1-4=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Help-browser.png|Development Tools|48|How To Recover}}&lt;br /&gt;
 |title=[[How To Recover|Recovery]]&lt;br /&gt;
 |description=Borked your Pre? Find out how to restore the factory image.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-2-4=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Icon-email.png|Email Accouncements|48}}&lt;br /&gt;
 |title=[http://groups.google.com/group/webos-internals-announce Subscribe to Announcements]&lt;br /&gt;
 |description=Google groups, where webOS-Internals dispatches announcements on important topics.&lt;br /&gt;
 }}&lt;br /&gt;
|cell-3-4=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:System-help.png|Development Tools|48|Help:Contents}}&lt;br /&gt;
 |title=[[Help:Contents|Wiki Help]]&lt;br /&gt;
 |description=Want to help out with the wiki, but don't know where to start.&lt;br /&gt;
 }}&lt;br /&gt;
|coderepositories=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Kompare-icon.png|Development Tools|48|Code Repositories}}&lt;br /&gt;
 |title=[[Code Repositories]]&lt;br /&gt;
 |description=&lt;br /&gt;
* [http://gitorious.org/webos-internals http://gitorious.org/webos-internals]&lt;br /&gt;
* [http://svn.webosinternals.org http://svn.webosinternals.org]&lt;br /&gt;
* [http://github.com/asedeno http://github.com/asedeno]&lt;br /&gt;
 }}&lt;br /&gt;
|resources=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:Tux_with_Docs.png|Development Tools|48|Resources}}&lt;br /&gt;
 |title=[[Resources]]&lt;br /&gt;
 |description=Want to find a community to join or help beyond what the wiki offers, find links here.&lt;br /&gt;
 }}&lt;br /&gt;
|irc=&lt;br /&gt;
 {{nav-block&lt;br /&gt;
 |imageName={{#icon:WebOS.png|Development Tools|48|Portal:Community}}&lt;br /&gt;
 |title=[[Portal:Community|IRC]]&lt;br /&gt;
 |description=&lt;br /&gt;
Join us in [irc://irc.freenode.net/webos-internals #webos-internals]&lt;br /&gt;
&lt;br /&gt;
The same rules apply as those on the wiki for discussion.&lt;br /&gt;
 }}&lt;br /&gt;
|leftnav=&lt;br /&gt;
[[About|Overview]]&amp;amp;nbsp;'''·''' [[Tutorial|Editing]]&amp;amp;nbsp;'''·''' [[Help:Questions|Questions]]&amp;amp;nbsp;'''·''' [[Admin_Changes|Changes that Require an Admin]]&amp;amp;nbsp;'''·''' [[Help:Style Guide|Style Guide]]&amp;amp;nbsp;'''·''' [[Help:Contents|Help]]&lt;br /&gt;
&lt;br /&gt;
|rightnav=&lt;br /&gt;
[[Help:Where Things Go|Where Things Go]] (The intended structure of this wiki)&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=Code_Repositories&amp;diff=5057</id>
		<title>Code Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=Code_Repositories&amp;diff=5057"/>
		<updated>2009-09-01T13:17:01Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== List ==&lt;br /&gt;
&lt;br /&gt;
* http://git.webos-internals.org&lt;br /&gt;
: Main WebOS Internals Source Code Repository&lt;br /&gt;
&lt;br /&gt;
* http://gitorious.org/webos-internals&lt;br /&gt;
: Old WebOS Internals Source Code Repository - still used for some things&lt;br /&gt;
&lt;br /&gt;
* http://github.com/asedeno &lt;br /&gt;
: Describe this repo [no, u]&lt;br /&gt;
&lt;br /&gt;
== Using GIT ==&lt;br /&gt;
&lt;br /&gt;
== Using SVN ==&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=4846</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=4846"/>
		<updated>2009-08-27T20:10:33Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l drivers as well as their patch to compile the camsrc plugin on their opensource website). Will probably also requre installing another video encoder. Little information is available about the proprietary 'palmvideoencoder' that I can find --[[User:Prenos|Prenos]] 20:10, 27 August 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
	<entry>
		<id>http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=4845</id>
		<title>VideoRecording</title>
		<link rel="alternate" type="text/html" href="http://wiki.webos-internals.org/index.php?title=VideoRecording&amp;diff=4845"/>
		<updated>2009-08-27T20:08:36Z</updated>

		<summary type="html">&lt;p&gt;Prenos: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At your command line (after [[Portal:Accessing_Linux|accessing linux]]):&lt;br /&gt;
&lt;br /&gt;
(make sure FS is rw)&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mount -o remount,rw /&lt;br /&gt;
gst-launch camsrc ! palmvideoencoder ! filesink location=/media/internal/downloads/foo.mts&lt;br /&gt;
mount -o remount,ro /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
- No GUI&amp;lt;br&amp;gt;&lt;br /&gt;
- No sound (need a muxer plugin? verify alsasrc works)&amp;lt;br&amp;gt;&lt;br /&gt;
- Frame rate seemed pretty decent too.&amp;lt;br&amp;gt;&lt;br /&gt;
- Video is H.264 at 480x320.&amp;lt;br&amp;gt;&lt;br /&gt;
- Image is rotated 90 degrees CCW&lt;br /&gt;
&lt;br /&gt;
other useful gstreamer commands:&lt;br /&gt;
&lt;br /&gt;
gst-inspect (shows list of sources to pipe through, mostly decoders/demuxers)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
root@castle:/var/home/ccrook# gst-inspect&lt;br /&gt;
palmvideodecoder:  palmvideodecoder: palmvideodecoder&lt;br /&gt;
palmaudiodecoder:  palmaudiodecoder: palmaudiodecoder&lt;br /&gt;
wavparse:  wavparse: WAV audio demuxer&lt;br /&gt;
wavenc:  wavenc: WAV audio muxer&lt;br /&gt;
udp:  udpsink: UDP packet sender&lt;br /&gt;
udp:  multiudpsink: UDP packet sender&lt;br /&gt;
udp:  dynudpsink: UDP packet sender&lt;br /&gt;
udp:  udpsrc: UDP packet receiver&lt;br /&gt;
typefindfunctions: application/x-id3v2: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: application/x-id3v1: mp3, mp2, mp1, mpga, ogg, flac, tta&lt;br /&gt;
typefindfunctions: audio/mpeg: mp3, mp2, mp1, mpga&lt;br /&gt;
typefindfunctions: video/mpeg4: m4v&lt;br /&gt;
typefindfunctions: audio/x-m4a: m4a&lt;br /&gt;
typefindfunctions: application/x-3gp: 3gp&lt;br /&gt;
typefindfunctions: video/quicktime: mov&lt;br /&gt;
typefindfunctions: audio/x-wav: wav&lt;br /&gt;
typefindfunctions: adts_mpeg_stream: aac&lt;br /&gt;
typefindfunctions: audio/x-amr-nb-sh: amr&lt;br /&gt;
typefindfunctions: audio/x-amr-wb-sh: amr&lt;br /&gt;
rtsp:  rtspsrc: RTSP packet receiver&lt;br /&gt;
rtsp:  rtpdec: RTP Decoder&lt;br /&gt;
rtsp:  rtspgoogle: Google RTSP Extension&lt;br /&gt;
gstrtpmanager:  gstrtpbin: RTP Bin&lt;br /&gt;
gstrtpmanager:  gstrtpclient: RTP Client&lt;br /&gt;
gstrtpmanager:  gstrtpjitterbuffer: RTP packet jitter-buffer&lt;br /&gt;
gstrtpmanager:  gstrtpptdemux: RTP Demux&lt;br /&gt;
gstrtpmanager:  gstrtpsession: RTP Session&lt;br /&gt;
gstrtpmanager:  gstrtpssrcdemux: RTP SSRC Demux&lt;br /&gt;
rtp:  rtpdepay: RTP depayloader&lt;br /&gt;
rtp:  rtpac3depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpdvdepay: RTP DV Depayloader&lt;br /&gt;
rtp:  rtpdvpay: RTP DV Payloader&lt;br /&gt;
rtp:  rtpilbcpay: RTP Payloader for iLBC Audio&lt;br /&gt;
rtp:  rtpilbcdepay: RTP iLBC packet depayloader&lt;br /&gt;
rtp:  rtpg726depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg726pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpg729depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpg729pay: RTP Payloader for G729 Audio&lt;br /&gt;
rtp:  rtpgsmdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpgsmpay: RTP GSM audio payloader&lt;br /&gt;
rtp:  rtpamrdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpamrpay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmudepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtppcmupay: RTP packet payloader&lt;br /&gt;
rtp:  rtppcmapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpadepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpapay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmpvdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmpvpay: RTP MPEG2 ES video payloader&lt;br /&gt;
rtp:  rtph263ppay: RTP packet payloader&lt;br /&gt;
rtp:  rtph263pdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph263depay: RTP H263 packet depayloader&lt;br /&gt;
rtp:  rtph263pay: RTP packet payloader&lt;br /&gt;
rtp:  rtph264depay: RTP packet depayloader&lt;br /&gt;
rtp:  rtph264pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16pay: RTP packet payloader&lt;br /&gt;
rtp:  rtpL16depay: RTP packet depayloader&lt;br /&gt;
rtp:  asteriskh263: RTP packet parser&lt;br /&gt;
rtp:  rtpmp1sdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp2tpay: RTP MP2T audio payloader&lt;br /&gt;
rtp:  rtpmp4vpay: RTP MPEG-4 Video packet payloader&lt;br /&gt;
rtp:  rtpmp4vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4apay: RTP packet payloader&lt;br /&gt;
rtp:  rtpmp4adepay: RTP packet parser&lt;br /&gt;
rtp:  rtpmp4gdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpmp4gpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexpay: RTP packet payloader&lt;br /&gt;
rtp:  rtpspeexdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpsv3vdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheoradepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtptheorapay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbisdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvorbispay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawdepay: RTP packet depayloader&lt;br /&gt;
rtp:  rtpvrawpay: RTP packet payloader&lt;br /&gt;
queue2:  queue2: Queue&lt;br /&gt;
quicktime:  qtdemux: QuickTime demuxer&lt;br /&gt;
quicktime:  rtpxqtdepay: RTP packet depayloader&lt;br /&gt;
playback:  playbin: Player Bin&lt;br /&gt;
playback:  playbin2: Player Bin 2&lt;br /&gt;
mulaw:  mulawenc: Mu Law audio encoder&lt;br /&gt;
mulaw:  mulawdec: Mu Law audio decoder&lt;br /&gt;
mobirtspsrc:  mobirtspsrc: MobiRtspSrc&lt;br /&gt;
ffmpeg:  ffdec_alac: FFMPEG ALAC (Apple Lossless Audio Codec) decoder&lt;br /&gt;
ffmpeg:  ffdec_qcelp: FFMPEG QCELP / PureVoice decoder&lt;br /&gt;
ffmpeg:  ffdeinterlace: FFMPEG Deinterlace element&lt;br /&gt;
ffmpeg:  ffaudioresample: FFMPEG Audio resampling element&lt;br /&gt;
uridecodebin:  decodebin2: Decoder Bin&lt;br /&gt;
uridecodebin:  uridecodebin: URI Decoder&lt;br /&gt;
decodebin:  decodebin: Decoder Bin&lt;br /&gt;
coreindexers:  memindex: A index that stores entries in memory&lt;br /&gt;
coreelements:  capsfilter: CapsFilter&lt;br /&gt;
coreelements:  fakesrc: Fake Source&lt;br /&gt;
coreelements:  fakesink: Fake Sink&lt;br /&gt;
coreelements:  fdsrc: Filedescriptor Source&lt;br /&gt;
coreelements:  fdsink: Filedescriptor Sink&lt;br /&gt;
coreelements:  filesrc: File Source&lt;br /&gt;
coreelements:  identity: Identity&lt;br /&gt;
coreelements:  queue: Queue&lt;br /&gt;
coreelements:  filesink: File Sink&lt;br /&gt;
coreelements:  tee: Tee pipe fitting&lt;br /&gt;
coreelements:  typefind: TypeFind&lt;br /&gt;
coreelements:  multiqueue: MultiQueue&lt;br /&gt;
video4linux2:  camsrc: Video (video4linux2/raw) Source&lt;br /&gt;
avi:  avidemux: Avi demuxer&lt;br /&gt;
avi:  avimux: Avi muxer&lt;br /&gt;
avi:  avisubtitle: Avi subtitle parser&lt;br /&gt;
audiotestsrc:  audiotestsrc: Audio test source&lt;br /&gt;
audiorate:  audiorate: Audio rate adjuster&lt;br /&gt;
audioconvert:  audioconvert: Audio converter&lt;br /&gt;
alsa:  alsamixer: Alsa mixer&lt;br /&gt;
alsa:  alsasrc: Audio source (ALSA)&lt;br /&gt;
alsa:  alsasink: Audio sink (ALSA)&lt;br /&gt;
alaw:  alawenc: A Law audio encoder&lt;br /&gt;
alaw:  alawdec: A Law audio decoder&lt;br /&gt;
palmvideosink:  palmvideosink: palmvideosink&lt;br /&gt;
palmvideoencoder:  palmvideoencoder: palmvideoencoder&lt;br /&gt;
palmqcelpdemux:  palmqcelpdemux: palmqcelpdemux&lt;br /&gt;
palmqcelpdemux: audio/x-gst-fourcc-sqcp: no extensions&lt;br /&gt;
palmmp3demux:  palmmp3demux: palmmp3demux&lt;br /&gt;
palmjpegencfilesink:  palmjpegencfilesink: palmjpegencfilesink&lt;br /&gt;
palmhttpsrc:  palmhttpsrc: Palm HTTP Source Element&lt;br /&gt;
palmamrdemux:  palmamrdemux: palmamrdemux&lt;br /&gt;
adpcmdecoder:  palmadpcmdecoder: ADPCM Decoder&lt;br /&gt;
palmaacdemux:  palmaacdemux: palmaacdemux&lt;br /&gt;
staticelements:  bin: Generic bin&lt;br /&gt;
staticelements:  pipeline: Pipeline object&lt;br /&gt;
&lt;br /&gt;
Total count: 36 plugins, 129 features&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Additional reference from XO Laptop site:  &lt;br /&gt;
&lt;br /&gt;
http://wiki.laptop.org/go/Programming_the_camera&amp;lt;br&amp;gt;&lt;br /&gt;
http://wiki.laptop.org/go/GStreamer#Using_gst_at_the_command_line&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently looking at ways to use the camera preview pipe as a method of video recording through the WebOS GUI by diverting it to the filesystem.&lt;br /&gt;
&lt;br /&gt;
File of interest:  /usr/lib/luna/luna-media/palmInitMedia.js&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More on the camera module: http://www.st.com/stonline/products/literature/bd/14404/vx6852.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SVN repository ==&lt;br /&gt;
Public SVN up at:  http://devel.ccrook.com/webos/camcorder&amp;lt;br&amp;gt;&lt;br /&gt;
username: default&amp;lt;br&amp;gt;&lt;br /&gt;
password: default&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Relies on Prelease for launching shell scripts.  Use Flashlight App! to install it before attempting to run.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Currently stop button doesn't work.&lt;br /&gt;
&lt;br /&gt;
== ToDo  ==&lt;br /&gt;
1.) Figure out proper way to freevideosink via a homebrew app (killing gst-launch properly)&amp;lt;br&amp;gt;&lt;br /&gt;
2.) Mux in sound from alsasrc&amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! alsasink&amp;quot; will give you sound from the mic playing back through the speakers, verifying alsasrc. It quickly loses resolution though, and starts giving &amp;quot;can't keep up with audio source&amp;quot; errors. --[[User:Zinge|Zinge]] 08:23, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;gst-launch alsasrc ! wavenc ! filesink location=/media/internal/downloads/test.wav&amp;quot; will record audio no problem. --[[User:Cpcrook|Cpcrook]] 17:36, 7 August 2009 (UTC)&lt;br /&gt;
:&amp;quot;gst-launch camsrc ! palmvideoencoder ! avimux name=mux ! filesink location=/media/internal/downloads/foo.mts alsasrc ! mulawenc ! mux.&amp;quot; will mux audio and video, though the timing was a bit off when I played it back. --[[User:Muchtall|Muchtall]] 18:15, 7 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
3.) Implement preview screen (possibility: send video through palmvideosink, then to palmvideoencoder so its still accessible for preview?)&amp;lt;br&amp;gt;&lt;br /&gt;
4.) Get Videos app to display recorded video files&amp;lt;br&amp;gt;&lt;br /&gt;
5.) Video conferencing via UDPsink?&amp;lt;br&amp;gt;&lt;br /&gt;
6.) Get 720x480@30fps working (TI claims this is possible with the current hardware). This seems to require recompiling camsrc with palm's 'capabilities template' removed or adjusted(palm offers both the base v4l drivers as well as their patch to compile the camsrc plugin on their opensource website). Will probably also requre installing another video encoder. Little information is available about the proprietary 'palmvideoencoder' that I can find.&lt;/div&gt;</summary>
		<author><name>Prenos</name></author>
	</entry>
</feed>