<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wm161.net &#187; Fedora</title>
	<atom:link href="http://wm161.net/browse/linux/fedora-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://wm161.net</link>
	<description>Your daily source of everything.</description>
	<lastBuildDate>Wed, 25 Aug 2010 15:49:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The stage is set for domination</title>
		<link>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/</link>
		<comments>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:08:48 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=579</guid>
		<description><![CDATA[
And that, my friends, is the last bit needed to get webcams into KDE. This morning around 3 AM or so I finished implementing the VideoDataOutput class in the gstreamer backend. It allows a phonon user to capture frames from a gstreamer stream. That picture was captured with the following code:



&#160;


Widget::Widget&#40;QWidget *parent&#41;


&#123;


&#160; &#160; ui.setupUi&#40;this&#41;;


&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snap.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snap-300x225.png" alt="" title="snap" width="300" height="225" class="alignnone size-medium wp-image-578" /></a></p>
<p>And that, my friends, is the last bit needed to get webcams into KDE. This morning around 3 AM or so I finished implementing the VideoDataOutput class in the gstreamer backend. It allows a phonon user to capture frames from a gstreamer stream. That picture was captured with the following code:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">Widget</span><span class="br0">&#40;</span>QWidget *parent<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ui.<span class="me1">setupUi</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; Phonon::<span class="me2">MediaObject</span> *mo = new Phonon::<span class="me2">MediaObject</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">createPath</span><span class="br0">&#40;</span>mo, ui.<span class="me1">video</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoDataOutput2</span> *capture = new Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoDataOutput2</span><span class="br0">&#40;</span>this<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Phonon::<span class="me2">createPath</span><span class="br0">&#40;</span>mo, capture<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; connect<span class="br0">&#40;</span>capture, SIGNAL<span class="br0">&#40;</span>frameReadySignal<span class="br0">&#40;</span><span class="kw4">const</span> VideoFrame2&amp;<span class="br0">&#41;</span><span class="br0">&#41;</span>, this, SLOT<span class="br0">&#40;</span>frameReady<span class="br0">&#40;</span><span class="kw4">const</span> VideoFrame2&amp;<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; QList&lt;Phonon::<span class="me2">VideoCaptureDevice</span>&gt; devices = Phonon::<span class="me2">BackendCapabilities</span>::<span class="me2">availableVideoCaptureDevices</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mo-&gt;setCurrentSource<span class="br0">&#40;</span>devices<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; mo-&gt;play<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; connect<span class="br0">&#40;</span>ui.<span class="me1">takeSnapshotButton</span>, SIGNAL<span class="br0">&#40;</span>clicked<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>, this, SLOT<span class="br0">&#40;</span>takePicture<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">frameReady</span><span class="br0">&#40;</span><span class="kw4">const</span> Phonon::<span class="me2">Experimental</span>::<span class="me2">VideoFrame2</span> &amp;frame<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; qDebug<span class="br0">&#40;</span><span class="br0">&#41;</span> &lt;&lt; <span class="st0">&quot;Got a frame.&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; m_buffer = frame;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">Widget::<span class="me2">takePicture</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; qDebug<span class="br0">&#40;</span><span class="br0">&#41;</span> &lt;&lt; <span class="st0">&quot;Snap!&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; QImage image = m_buffer.<span class="me1">qImage</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; image.<span class="me1">save</span><span class="br0">&#40;</span><span class="st0">&quot;/tmp/snap.png&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Once I test it against some code that doesn&#8217;t use video capture, it&#8217;ll be golden.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/28/the-stage-is-set-for-domination/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Webcams in Phonon: The GStreamer Edition</title>
		<link>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/</link>
		<comments>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 06:49:02 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=574</guid>
		<description><![CDATA[
Hey, look, its a working webcam in Phonon. Again. My significant other is away for the week being a camp counsellor, so instead here is a picture of us drawn by an artist we met at Ohayocon earlier this year in Columbus, OH. I appear to be playing Cave Story, and she&#8217;s wearing her MOMO [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot6.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot6-300x234.png" alt="" title="snapshot6" width="300" height="234" class="alignnone size-medium wp-image-575" /></a></p>
<p>Hey, look, its a working webcam in Phonon. Again. My significant other is away for the week being a camp counsellor, so instead here is a picture of us drawn by an artist we met at Ohayocon earlier this year in Columbus, OH. I appear to be playing Cave Story, and she&#8217;s wearing her <a href="http://xenosaga.wikia.com/wiki/MOMO">MOMO</a> costume.</p>
<p>The first picture was much more exciting, I think. But this one still has potential. It was created using the GSOC project I <a href="http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/">previously discovered</a>. The code is actually one line shorter:</p>
<p><code lang="c++">QList<Phonon::VideoCaptureDevice> devices = Phonon::BackendCapabilities::availableVideoCaptureDevices();<br />
mediaObject->setCurrentSource(devices[0]);</code></p>
<p>Assuming that no super huge changes happen with the API, I plan to work on the Xine backend once I finish implementing the bits I left out from my code, such as device removal notification and proper device icons. My code is up for ridicule at <a href="http://gitorious.org/~tdfischer/phonon/phonon-webcams/commits/webcam">Gitorious, under my personal repository</a>. Make sure you check out the &#8216;webcam&#8217; branch.</p>
<p>Before I go, a certain &#8220;Steve Schilz&#8221; has contacted me with an interest in writing support for the new capture API into the DirectShow backend. I gave him some pointers on where to start, so all those still using Windows can rejoice.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/26/webcams-in-phonon-the-gstreamer-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>In which our hero discovers his work already done</title>
		<link>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/</link>
		<comments>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 06:49:09 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=564</guid>
		<description><![CDATA[Phonon already has video capture support. But nobody thought to tell kde-multimedia@lists.kde.org, #phonon, or the planet(s). I&#8217;m also slightly miffed that I wrote a proposal for the same exact thing and never got considered.
So karma decided to deliver my big box of homemade DDR machine fun from Newegg 2 days earlier. Such is life.
Compared to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gitorious.org/phonon/phonon/merge_requests/14">Phonon already has video capture support</a>. But nobody thought to tell kde-multimedia@lists.kde.org, #phonon, or the planet(s). I&#8217;m also slightly miffed that I wrote a proposal for the same exact thing and never got considered.</p>
<p>So karma decided to deliver my big box of homemade DDR machine fun from Newegg 2 days earlier. Such is life.</p>
<p>Compared to that merge request, my changes were miniscule, but I feel that I should still explain what I did, what I had planned, and how Casian&#8217;s changes fall (more or less) right in line. Hopefully my input will help.</p>
<p>The nucleus of my design was the CaptureDevice. I planned on adding a constructor to the MediaSource that would take this newly invented CaptureDevice class. CaptureDevices would be abstract devices and could represent any well-defined hardware-based source of media. Here&#8217;s what I wrote:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">class PHONONEXPERIMENTAL_EXPORT CaptureDevice</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; public:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">enum</span> Type <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Invalid = <span class="nu0">-1</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Camera,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Tuner,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Desktop,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//Microphone,</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//LineIn,</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Unknown</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//Default capture device</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span>Type type<span class="br0">&#41;</span>; <span class="co1">//Default device for type</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; CaptureDevice<span class="br0">&#40;</span>Type type, <span class="kw4">const</span> QString &amp;deviceName<span class="br0">&#41;</span>; <span class="co1">//Explicit device path</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; QString deviceName<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Type type<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw4">const</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; protected:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; explicit CaptureDevice<span class="br0">&#40;</span>CaptureDevicePrivate &amp;dd<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; QExplicitlySharedDataPointer&lt;CaptureDevicePrivate&gt; d;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
</ol>
</div>
<p>I wanted it to be super simple so anyone could just shout, &#8220;I need a webcam&#8221;, and *bam* you&#8217;d get the default webcam instead of the tuner card. Or even better, just ask for any kind of capture device and in 99.99% of user environments, you&#8217;d get something with an audio stream. The 0.01% is to account for users without any kind of sound card or sound capturing device. You&#8217;ll also note the special &#8220;Desktop&#8221; type for capturing your desktop. I think its safe to say that pretty much all platforms implement this in their media layer.</p>
<p>In addition, you could pass in some string that the platform could understand (eg. &#8220;/dev/video0&#8243; or &#8220;plughw:0&#8243;). That way, you could grab a Device from Solid and pass that around.</p>
<p>Looking at his code, all that is already there. So the only real difference between my planned design and Casian&#8217;s was that there wouldn&#8217;t be a distinction between audio and video capture unless you absolutely needed it (such as for changing TV channels), which is what type() is for. The way I thought about it was that with a simple CaptureDevice to cover both cases, there&#8217;d only be one place to go for all your capture needs. In retrospect, splitting it up this way is a much better idea. It keeps us from trying to squash the unrelated functions of TV tuning and microphone boosting into one class.</p>
<p>Besides that one detail, his implementation is almost verbatim. I look forward to when the merge request gets accepted so I can jump in and get the gstreamer and xine engines to work with it. The code I wrote for my CaptureDevice is literally one line of original code: <kbd>gst_element_factory_make("v4l2src", "v4l2src");</kbd>.</p>
<p>So congratulations and many thanks to Casian for doing what I was supposed to be doing for a while :P. Please direct your thanks to him instead of the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/14/in-which-our-hero-discovers-his-work-already-done/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Live: From Phonon!</title>
		<link>http://wm161.net/2010/07/13/live-from-phonon/</link>
		<comments>http://wm161.net/2010/07/13/live-from-phonon/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:04:08 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=558</guid>
		<description><![CDATA[Hey, remember me? Yeah, I was supposed to get webcams into Phonon. What was that, months ago? As everyone knows, life gets in the way at times. But the last week or so, things have settled down. In the last three days, I sat down and re-learned everything I forgot about phonon. Then I learned [...]]]></description>
			<content:encoded><![CDATA[<p>Hey, remember me? Yeah, I was supposed to get webcams into Phonon. What was that, months ago? As everyone knows, life gets in the way at times. But the last week or so, things have settled down. In the last three days, I sat down and re-learned everything I forgot about phonon. Then I learned a little bit about gstreamer.</p>
<p>So, cue the drumroll.</p>
<p><strong>Ladies and gentlemen.</strong></p>
<p>I present to you, for your viewing pleasure, the first screenshot of a webcam being used with phonon:</p>
<p><a href="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot5.png"><img src="http://wm161.net/blog/wp-content/uploads/2010/07/snapshot5-300x234.png" alt="" title="snapshot5" width="300" height="234" class="alignnone size-medium wp-image-559" /></a></p>
<p><em>ta da!</em></p>
<p>That would be Melanie, my girlfriend-turned-test-subject.</p>
<p>Its not much, but thats because it is only 14 lines of code.</p>
<p>Here&#8217;s the code, in as few lines as needed:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">Phonon::<span class="me2">Experimental</span>::<span class="me2">CaptureDevice</span> *dev = new Phonon::<span class="me2">Experimental</span>::<span class="me2">CaptureDevice</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">mediaObject-&gt;setCurrentSource<span class="br0">&#40;</span>dev<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">mediaObject-&gt;play<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>The other lines not there create a mainwindow, a video widget, etc.</p>
<p>The code in phonon though, is a little ugly. It&#8217;ll need cleaned up slightly before I can push out a commit to the git repo. Its also 2 AM, so I&#8217;ll post more details about how I&#8217;m planning on designing the system tomorrow.</p>
<p>Of course, I could be entirely dancing all over someone else&#8217;s toes. I had to drop out of the loop for a good while, but from what I understand, nobody has attempted tackling this since I last tried. Ping me if I&#8217;m wrong :).</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/07/13/live-from-phonon/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Exciting Adventures in Windows</title>
		<link>http://wm161.net/2010/01/24/exciting-adventures-in-windows/</link>
		<comments>http://wm161.net/2010/01/24/exciting-adventures-in-windows/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 02:56:46 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=528</guid>
		<description><![CDATA[Over the weekend, I went to a small LAN party of 4 people, including myself where we played a &#8216;quick&#8217; 5-hour game of Sins of a Solar Empire. Yes, the game really is that huge. The real fun though, was that my windows partition ate itself a few days ago and I forgot about fixing [...]]]></description>
			<content:encoded><![CDATA[<p>Over the weekend, I went to a small LAN party of 4 people, including myself where we played a &#8216;quick&#8217; 5-hour game of Sins of a Solar Empire. Yes, the game really is that huge. The real fun though, was that my windows partition ate itself a few days ago and I forgot about fixing it till I arrived. Windows would boot up and show me a BSOD saying it couldn&#8217;t mount the boot partition. Someone burned a XP Pro installer CD which I used to enter the &#8216;recovery console&#8217;. Then it got exciting. For about an hour, my friend who is a Windows expert tried to help me figure out which windows &#8216;drive&#8217; contained my windows install. I was terrified of using the disk checker tool on the wrong drive for fear that Windows would eat it alive, claiming it was all &#8216;bad data&#8217;. My windows bootloader was installed to the first partition, sda1. In Windows, this shows up as the I drive because of the multi-format USB card reader my machine came with. My linux partitions (/boot and /) show up as either J or O, I&#8217;m not sure which is which.</p>
<p>The recovery console didn&#8217;t care about that useful bit of information I&#8217;ve lived with comfortably for about a year. My friend told me that Windows sees the first NTFS partition as the C drive, and thats that. Problem was, that windows couldn&#8217;t recognize any drives as being my NTFS partition. Linux could *guess* that sda1 had an NTFS header, but the important bits of the header were corrupt so it couldn&#8217;t be mounted. In the recovery console, I, J, and O were non-existant. The only drives I could see were two missing floppies, my two DVD drives, and my three hard disk partitions. After an hour of jumping through logical problems such as &#8220;If windows marks the drives it sees in alphabetic order, but my windows drive is actually called I in real life, and chkdisk might find a partition, then maybe I&#8217;m probably not screwed.&#8221;</p>
<p>I gave up<sup>1</sup>, rebooted to Linux in single user mode, and ran <a href="http://www.cgsecurity.org/wiki/TestDisk">TestDisk</a>. Problem solved.</p>
<p>Lesson learned here? <strong>You can&#8217;t use Windows to fix Windows</strong>. It just simply isn&#8217;t equipped to do so. I&#8217;ll gladly stick with <a href="http://fedoraproject.org">software that gives me the tools to do what I want</a>.</p>
<p><sup>1</sup>: My friend actually donated a spare harddrive for the night that I quickly installed a fresh copy of windows to, letting us finally start our game at 2am. I fixed things when I got home later that day.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/01/24/exciting-adventures-in-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video4Linux2 in xine-lib</title>
		<link>http://wm161.net/2010/01/06/video4linux2-in-xine-lib/</link>
		<comments>http://wm161.net/2010/01/06/video4linux2-in-xine-lib/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 17:12:39 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=524</guid>
		<description><![CDATA[This morning around 2:30 AM I finally got a semi-working implementation of video4linux2 in xine-lib. Clone my hg xine-lib 1.1 repository from http://tdfischer.fedorapeople.org/xine-lib/ and have a look at src/input/input_v4l2.c. Thats one big roadblock out of the way towards getting webcam support in Phonon.
Having never hacked on xine before, the code isn&#8217;t nearly as nice as [...]]]></description>
			<content:encoded><![CDATA[<p>This morning around 2:30 AM I finally got a semi-working implementation of video4linux2 in xine-lib. Clone my hg xine-lib 1.1 repository from <a href="http://tdfischer.fedorapeople.org/xine-lib/">http://tdfischer.fedorapeople.org/xine-lib/</a> and have a look at src/input/input_v4l2.c. Thats one big roadblock out of the way towards getting webcam support in Phonon.</p>
<p>Having never hacked on xine before, the code isn&#8217;t nearly as nice as I want it to be. In fact, you&#8217;ll notice around line 215 that I magically multiply the image size by two and it suddenly works. Yay. There&#8217;s also a few other interesting bits, such as returning &#8220;v4l:/&#8221; as the media URI I&#8217;m currently playing, despite being told to play /dev/video0. This appears to be the only way to get the v4l demuxer to start demuxing my video stream. After that though, it Just Works.</p>
<p>So right now my plans are to get it included into xine-lib proper, which might mean porting it to the 1.2 unstable branch. In addition, it needs to be able to support more than just one format (including the MPEG streams that some capture devices use), radio devices, closed captioning, OSD output, and probably most importantly, audio. Bits of that sound to me like I&#8217;ll have to write a better demuxer, specific to v4l2 to better handle things. I&#8217;ve heard demuxers are easy though.</p>
<p>Lastly, in reply to all the comments on my last v4l-in-phonon post, thanks for the links, but the bit about wanting to write a photobooth clone was just a handy introduction to the real goal: getting webcams in phonon. I don&#8217;t really think its possible to simply &#8216;drop in&#8217; one of those many libraries into Phonon to make things work, as those are all C++ (both gstreamer and xine are pure C), and its the backend&#8217;s job to handle getting video from the device anyways. But the kopete library is where I started, and its how I learned how video4linux2 works, so thanks for that.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2010/01/06/video4linux2-in-xine-lib/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Device automounting in KDE 4.4</title>
		<link>http://wm161.net/2009/11/28/device-automounting-in-kde-4-4/</link>
		<comments>http://wm161.net/2009/11/28/device-automounting-in-kde-4-4/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 05:44:44 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=517</guid>
		<description><![CDATA[Here&#8217;s a picture:

Here&#8217;s a link: http://websvn.kde.org/trunk/KDE/kdebase/runtime/solid-device-automounter/
If thats not enough, then here&#8217;s some words:
Juuuuuust before the last day of classes before thanksgiving break at Akron, and before the hard freeze I moved device-automounter out of kdereview and into kdebase. The screenshot above shows the configuration page, which is off by default.
A few people might be wondering [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a picture:<br />
<img src="http://wm161.net/blog/wp-content/uploads/2009/11/device-automounter1-300x234.png" alt="device-automounter&#039;s KCM page" title="device-automounter&#039;s KCM page" width="300" height="234" class="alignnone size-medium wp-image-519" /><br />
Here&#8217;s a link: <a href="http://websvn.kde.org/trunk/KDE/kdebase/runtime/solid-device-automounter/">http://websvn.kde.org/trunk/KDE/kdebase/runtime/solid-device-automounter/</a></p>
<p>If thats not enough, then here&#8217;s some words:</p>
<p>Juuuuuust before the last day of classes before thanksgiving break at Akron, and before the hard freeze I moved device-automounter out of kdereview and into kdebase. The screenshot above shows the configuration page, which is <em>off by default</em>.</p>
<p>A few people might be wondering why, but <a href="http://lists.kde.org/?l=kde-core-devel&#038;m=125081398010829&#038;w=2">this mail in the kdereview thread</a> probably explains the background a bit. In my opinion, it just isn&#8217;t an easily solvable problem right now. I&#8217;m leaving it up to the distros to decide if they want it on/off by default (just hack <a href="http://websvn.kde.org/trunk/KDE/kdebase/runtime/solid-device-automounter/lib/AutomounterSettingsBase.kcfg?view=markup">lib/AutomounterSettingsBase.kcfg</a> or create a proper kded_device_automounterrc config.)</p>
<p>Administrivia aside, the automounter has a little bit of intelligence in it (explained in the <a href="http://websvn.kde.org/trunk/KDE/kdebase/runtime/solid-device-automounter/SETTINGS?revision=1053951&#038;view=markup">SETTINGS</a> file). With all three boxes checked (my recommendation!), the following logic happens whenever it sees devices:</p>
<p>If a device has ever been mounted (specifically, ever mounted while device-automounter was around), it is tagged as &#8216;familiar&#8217;.</p>
<p>Device-automounter only cares if a device is &#8216;familiar&#8217; if that second checkbox about manually mounted devices is checked. If checked, it only mounts familiar devices. Otherwise, it&#8217;ll mount everything. It might sound strange, but its useful to me when I plug in friend&#8217;s random devices on my laptop to let them charge, and I don&#8217;t want to have to make sure I &#8216;eject&#8217; or &#8217;safely remove&#8217; or unmount them.</p>
<p>So now we just need some way to get the lower level bits (like DeviceKit) to do this stuff. Then maybe we&#8217;ll be a few years closer to catching up to 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2009/11/28/device-automounting-in-kde-4-4/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The Always Innovating Touchbook</title>
		<link>http://wm161.net/2009/11/24/the-always-innovating-touchbook/</link>
		<comments>http://wm161.net/2009/11/24/the-always-innovating-touchbook/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 16:32:35 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=515</guid>
		<description><![CDATA[Since netbooks started becoming popular, I&#8217;ve always wanted a tablet with an ARM processor. I just found this juicy tidbit today: The Always Innovating Touchbook. Its a tablet with an ARM processor. Not sure how I missed finding this, but it looks perfect for me. Always Innovating seems to have a very strong open source [...]]]></description>
			<content:encoded><![CDATA[<p>Since netbooks started becoming popular, I&#8217;ve always wanted a tablet with an ARM processor. I just found this juicy tidbit today: <a href="http://alwaysinnovating.com/home/index.htm">The Always Innovating Touchbook</a>. Its a tablet with an ARM processor. Not sure how I missed finding this, but it looks perfect for me. Always Innovating seems to have a very strong open source community behind them, and they fully support hacking the device to install whichever OS you choose.</p>
<p>As a bonus, the keyboard is detachable and the display can be stuck on your fridge since it has a magnetic back. Has anyone else out there ever heard of this thing?</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2009/11/24/the-always-innovating-touchbook/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Get to know a Fedora Ambassador and KDE hacker</title>
		<link>http://wm161.net/2009/11/08/get-to-know-a-fedora-ambassador-and-kde-hacker/</link>
		<comments>http://wm161.net/2009/11/08/get-to-know-a-fedora-ambassador-and-kde-hacker/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 04:54:08 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=510</guid>
		<description><![CDATA[Name: Trever Fischer
IRC Nick: tdfischer
IRC Channels: #plasma #kde #fedora-ambassadors #fedora-kde, lots more on freenode, and #uakroncs on slashnet.
Fedora Ambassador: At the University of Akron in Akron, Ohio, USA
One of the few pictures of me that actually shows my face.
]]></description>
			<content:encoded><![CDATA[<p>Name: Trever Fischer</p>
<p>IRC Nick: tdfischer</p>
<p>IRC Channels: #plasma #kde #fedora-ambassadors #fedora-kde, lots more on freenode, and #uakroncs on slashnet.</p>
<p>Fedora Ambassador: At the University of Akron in Akron, Ohio, USA</p>
<p><div id="attachment_512" class="wp-caption alignnone" style="width: 308px"><img src="http://wm161.net/blog/wp-content/uploads/2009/11/n553818178_2124363_6964.jpg" alt="Dancing on top of an igloo last winter on campus." title="n553818178_2124363_6964" width="298" height="370" class="size-full wp-image-512" /><p class="wp-caption-text">Dancing on top of an igloo last winter.</p></div><br />
One of the few pictures of me that actually shows my face.</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2009/11/08/get-to-know-a-fedora-ambassador-and-kde-hacker/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ACM at UA Part 2</title>
		<link>http://wm161.net/2009/11/07/acm-at-ua-part-2/</link>
		<comments>http://wm161.net/2009/11/07/acm-at-ua-part-2/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 01:33:04 +0000</pubDate>
		<dc:creator>Trever Fischer</dc:creator>
				<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://wm161.net/?p=504</guid>
		<description><![CDATA[Like I said, here&#8217;s some pictures:

Click it to go to the flickr set.
This week we had at least 10 people say they&#8217;ll be at our install fest next Tuesday &#8220;for sure&#8221;. Combined with what we had two weeks ago, I think our installation day is going to be rather busy.
As far as how exactly we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>Like I said, here&#8217;s some pictures:<br />
<a href="http://www.flickr.com/photos/cosmokramer/sets/72157622632518627/" title="2009-11-05 13.56.28 by Trever Fischer, on Flickr"><img src="http://farm4.static.flickr.com/3517/4083891321_d06a0e0445.jpg" width="500" height="375" alt="2009-11-05 13.56.28" /></a><br />
Click it to go to the flickr set.</p>
<p>This week we had at least 10 people say they&#8217;ll be at our install fest next Tuesday &#8220;for sure&#8221;. Combined with what we had two weeks ago, I think our installation day is going to be rather busy.</p>
<p>As far as <em>how</em> exactly we&#8217;re doing our installs we&#8217;ll be having people either bring in their own computer, where we can then do the install and tweaking for them (including getting icky broadcom drivers to work, proprietary graphics, and setting up a connection to UA&#8217;s wireless). When they show up we&#8217;ll ask a few questions such as &#8220;Do you play games on windows?&#8221; or &#8220;Is there any software you use a lot [that wouldn't be available on fedora]&#8220;. Then we customize the system for them (dual boot, setting up wine, showing cedega, etc) and send them home with a copy of the install CD we built with Revisor for their system. The CDs get labeled nice Fedora/ACM logos with the disk printer the CS department bought us just last week.</p>
<p>If you&#8217;re a fedora user or a UA student, drop on by the 3rd floor of the student center. We won&#8217;t be too busy to say hello!</p>
]]></content:encoded>
			<wfw:commentRss>http://wm161.net/2009/11/07/acm-at-ua-part-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
