tag:blogger.com,1999:blog-25252841158399873732024-03-06T09:44:17.236+01:00Project SymphonyWhen you seek symphony in life...<br/>
<small>Projects, stories, ideas, feelings, events and much, much more</small>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.comBlogger102125tag:blogger.com,1999:blog-2525284115839987373.post-22505061734064279962014-07-20T21:31:00.003+02:002014-07-20T21:31:59.875+02:00Git send-email on OSX<pre>The TL;DR version of <a href="http://kbase.wincent.com/old/knowledge-base/Installing_Net::SMTP::SSL_for_sending_patches_with_Git_over_secure_SMTP.html">this guide</a></pre>
<pre> </pre>
<pre>sudo -H cpan IO::Socket::SSL</pre>
<pre>sudo -H cpan -fi IO::Socket::SSL</pre>
<pre>sudo -H cpan -fi Net::SMTP::SSL </pre>
<pre></pre>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-49709527308828267192014-07-07T23:50:00.000+02:002014-07-07T23:50:55.345+02:00Colloquy up and down<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">On a fresh <a href="http://colloquy.info/">Colloquy</a> install, you will be surprised that the up and down arrows do not bring back the history of your chats. In reality it does, but you have to hold <span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">alt</span></span> while pressing the arrows. This is so that you can move around your input field freely just with keyboard.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">The problem is that there is no option in the preference GUI to change this behaviour and you have to resort to the command line, as pointed out <a href="http://colloquy.info/project/wiki/Documentation/TipsAndTricks/HiddenPreferences">here</a>. I hope this will change in the future.</span><br />
<blockquote>
<tt>defaults write info.colloquy JVSendHistoryUsesOnlyArrows -bool true</tt>
<br />
</blockquote>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-71999157425990697612014-07-04T22:27:00.004+02:002014-07-07T22:42:22.374+02:00OSX energy controls redux<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">It's not the <a href="http://projectsymphony.blogspot.ca/2009/12/so-ive-adhered-to-tnes-campaign-new.html">first time</a> I find myself complaining about one design aspect of OSX, despite appreciating most parts of it.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">This time is the Energy Control panel, which in newer versions is merged in a single slider, instead of having the usual configurations "when plugged-in" and "when battery".</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Luckily there is a way to restore everything properly this time, thanks to this helpful trick (from <a href="http://forums.macrumors.com/showthread.php?t=1595455&page=2">MacRumors</a> forum).</span><br />
<br />
<blockquote class="tr_bq">
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">edit "/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/Your-Mac-Model.plist"</span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br />
find:<br />
<key>UnifiedSleepSliderPref</key><br />
<true/></span></span>
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><br />
replace:<br />
<key>UnifiedSleepSliderPref</key><br />
<false/></span></span>
</blockquote>
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Unfortunately I couldn't find a matching model number so I just ended up editing all of them >_<</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">But it worked, so yay! </span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-38139926918213537622014-04-13T02:56:00.000+02:002014-04-13T03:04:33.975+02:00A short story of interlacing in HEVC<i><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">And how it nearly ruined another video coding standard.</span></i><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Everyone knows that interlacing was a trick in the '80s for pseudo motion compensation with analogue video. This more or less worked because it mimicked how television worked back then. This technique was preserved when flat panels for pc and tv were introduced, for a mix of backward compatibility and technical limitations, and video coding features interlacing in MPEG2 and H264 and similar.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">However as with black and white, TACS and Gopher, old technology has to be replaced with modern and efficient technology, as a trade off of users' interests and technology providers' market prospects. In case you are not familiar, interlacing is a mess to support, makes decoding slower and </span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">heavily</span> degrades quality. People saying that interlacing saves bandwidth do not know much about video coding and bad marketing claiming that higher resolution is better than higher framerate has an effect too.</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So, when ITU and then MPEG set out to establish the mandates for a new video standard capable of superseding H264, it was decided that interlacing was old enough, did more harm than good and it was time for retirement: HEVC was going to be the first video codec to officially deprecate interlacing.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Things went pretty swell during its development, until a few months before the completion of the standard. A group of US companies complained that the proposed tools were not sufficient (a set of SEI messages and treating fields like progressive frames) and heavily protested with both standardisation bodies. ITU firmly rejected the idea (with the video group chair threatening to step down) while MPEG set out to understand the needs of the industry and see if there was anything that could be done.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">An ad-hoc group was established to see if there was any evidence that interlaced coding tool would have improved the situation. Things looked really shady, the Requirements group even mentioned that it was the first time that an AhG was established to look for evidence, instead of establishing an AhG because there was evidence. Several liasons from EBU and other DVB members tried to point out this absurdity while the threat of adding interlacing back in HEVC became real. Luckily the first version of the specifications got published in the
meantime, so this decision didn't slow down the standardisation process.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Why so much love towards interlacing? Well in the "rebellious" group defence, it is true that interlaced content in HEVC is less performant than in H264; however it is also true that such deinterlaced content in HEVC outperforms H264 in any configuration. Truth is that mass marketed deinterlacers (commonly found in televisions for example) bring a lot of royalty income, so it is normal that companies with vested interests would prefer to have interlacing in a soon-popular video standard like HEVC. Also in markets like US where the network operator (which has control on the encoding but not on the video source) might differ from the content provider, it could be politically difficult to act as a carrier only if you have to deinterlace a video.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">However these problems are actually not enough for forcing every encoder, decoder, analyser to support a deprecated technology like interlacing. Technical problems can be solved with good deinterlacers at the top of the distribution chain, while political ones can be solved amending contracts. Plus having progressive only video will definitely improve quality and let the industry concentrate on other delicate subjects, like bit depth, both properties going in favour of users' interests.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">At the last MPEG meeting, the "rebellious" group which had been working on reintroducing interlacing for a year provided no real evidence that interlaced coding tools would improve HEVC at all. The only sensible solution was to disband the group over this wasted effort and support progressive video only, which is what happened luckily. So now both ITU and MPEG support progressive video only and this has finally nailed it.</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Interlacing is dead, long live progressive.</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><i>Written by Vittorio Giovara (<a href="mailto:projectsymphony@gmail.com">projectsymphony@gmail.com</a><projectsymphony gmail.com=""></projectsymphony>)</i></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><i>Published under a CC-BY-SA 3.0 license. </i></span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com3tag:blogger.com,1999:blog-2525284115839987373.post-15060354088022543992014-03-25T22:19:00.003+01:002014-03-25T22:19:53.654+01:00Libav 10 and my first year with the teamI am very glad to announce that Libav 10 has been released!<br />
<br />This has a bunch of features that I contributed to, in particular regarding stereoscopic video and interlaced filtering, but more importantly this release has the work of an awesome group of people which has been carried out for a whole year. This is the magic of open source!<br />
<br />
I joined the group more or less one year ago, with some patches regarding an obscure H.264 specification which I then later reimplemented in HEVC and then I wrote a few filters I needed and then designed an API and then, wow! A whole year passed without me noticing, and I am still around, sending patches to the same group of people who welcomed someone who had problems with shifting values (sad but true story)!<br />
<br />
I met the team both at VDD and FOSDEM and they've been the most exciting conferences I ever went to (and I went to a lot of them). I couldn't believe I was with the devteam of my favourite multimeida opensource projects I've been following since I was a kid! Until a year ago, I saw the names from the commits and the blogposts from both VideoLAN and Libav projects and I had been thinking "Oh wouldn't it be so cool to be like one of them".<br />
<br />
The answer is yes, it definitely would, and it's something that can happen if one is really committed in it! The Libav Info page states "Being a committer is a duty, not a privilege", but it sure does feel like one.<br />
<br />
Thanks for this exciting year guys, I look forward to the next ones.Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-1836203803349668552014-03-12T15:37:00.000+01:002014-03-12T15:37:13.122+01:00MacVim and gVim and Vim configuration<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Remember that if you use gVim or MacVim the configuration file is different! GUIs for <span style="font-family: "Courier New",Courier,monospace;">vim</span> read the options in <span style="font-family: "Courier New",Courier,monospace;">.gvimrc</span> instead of <span style="font-family: "Courier New",Courier,monospace;">.vimrc</span>.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">However most of the times it's enough to have a simple simlink from one to another, so just do</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">ln -s ~/.vimrc ~/.gvimrc</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Note that just deleting <span style="font-family: "Courier New",Courier,monospace;">.gvimrc</span> won't be enough, as defaults will be loaded then.</span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-19848992840913504112014-03-04T10:45:00.003+01:002014-03-24T06:02:19.983+01:00Strage issue with Fastweb and SSH/GitHub<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I recently changed my Internet Service Provider and suffered from a strange connectivity issue.</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">When connecting to SSH on Fastweb network I got some random hangs and especially on GitHub I couldn't either fetch/clone or anything.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">The solution is quite strange, as found <a href="http://gaming.ngi.it/showthread.php?t=569259">on this forum</a>, and requires to add a flag to every connection made, <span style="font-family: "Courier New",Courier,monospace;">-oIPQoS=cs0</span></span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">However it's not possible (or I haven't found a way how) to set connection parameters for git, so I had to rename the system <span style="font-family: "Courier New",Courier,monospace;">ssh</span> into <span style="font-family: "Courier New",Courier,monospace;">ssh_right</span> and supply this simple script instead:</span><br />
<blockquote class="tr_bq">
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">$ cat /usr/bin/ssh<br />#!/bin/bash<br /><br />exec ssh_right -oIPQoS=cs0 $@</span> </span></blockquote>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-79416424926565943612014-02-13T02:08:00.002+01:002014-03-24T05:59:09.738+01:00When git cloning locally...<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">If you clone a local git repository while you are on a given branch, also the new clone will be on that branch.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">This is solvable by some easy git fetch but the HEAD will point to the first branch, and will give you headaches when you have to rebase.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">the solution is *not* set-upstream, which will track changes from another remote by default, but *set-head* which will point to another local branch.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So, to restore sanity</span><br />
<br />
<pre><code>git remote set-head origin master</code></pre>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-39129603004581673042013-10-30T00:13:00.004+01:002013-10-30T00:13:41.378+01:00clang colorized html output<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I love that clang has <b><span style="color: red;">C</span><span style="color: orange;">O</span><span style="color: yellow;"><span style="color: #ffe599;">L</span></span><span style="color: lime;">O<span style="color: cyan;">U</span></span><span style="color: blue;">R</span><span style="color: purple;">S</span></b> in its output, but how to keep this formatting when copying the output to a file?</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">The solution is simple, add a <span style="font-family: "Courier New",Courier,monospace;">-fcolor-diagnostics</span> option and pipe the result to <a href="http://www.pixelbeat.org/scripts/ansi2html.sh">ansi2html</a>. Of course since most of the interesting output is on stderr, don't forget to correctly redirect it (<span style="font-family: "Courier New",Courier,monospace;">2>&1</span>).</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So in the end</span><br />
<blockquote class="tr_bq">
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="background-color: black;"><span style="color: white;"><span style="font-family: "Courier New",Courier,monospace;">$ clang -fcolor-diagnostics temp.c 2>&1 | ansi2html > temp.html</span></span></span></blockquote>
<br />
<i><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Many thanks to <a href="http://www.m8y.org/">nemo</a> for sharing this trick and several others on this blog!</span></i>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-53706774041820249762013-10-15T15:03:00.000+02:002014-03-24T06:02:20.010+01:00pemissions on .sshRemember that every user's <span style="font-family: "Courier New",Courier,monospace;">.ssh</span> folder needs to have 700 as permssion, or ssh will complain and revert to passphrase authentication.<br />
<br />
It is also good practice to have <span style="font-family: "Courier New",Courier,monospace;">authorized_keys</span> as 600.Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-53457747069973964832013-08-25T19:07:00.000+02:002014-03-24T05:48:05.904+01:00Libav function prefixes<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">For future reference, all (or most of) functions and structs in libav have a prefix that indicates the exposure of that functions. Those are</span><br />
<ul>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">av_</span> meaning a public function, present in the API</span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">;</span></li>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">ff_</span> meaning a private function, not present in the API;</span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"> </span></li>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">avpriv_</span> meaning inter-library private function, used internally across libraries only.</span></li>
</ul>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Source: </span><span style="font-family: "Courier New",Courier,monospace;">#libav-devel</span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com1tag:blogger.com,1999:blog-2525284115839987373.post-60047129865361205932013-06-11T10:56:00.001+02:002014-03-24T05:57:53.222+01:00CMake library location<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">For some reason, you either know what kind of library you're going to build (<span style="font-family: "Courier New",Courier,monospace;">STATIC </span>or <span style="font-family: "Courier New",Courier,monospace;">SHARED</span>) or there is no way to know which prefix and suffix your library is going to get.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">However, you can use the <span style="font-family: "Courier New",Courier,monospace;">LOCATION </span>property of the target and do some magic there.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">See http://www.cmake.org/Bug/view.php?id=5195</span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-6919154270794349672013-06-03T09:55:00.000+02:002014-03-24T05:59:09.727+01:00Fast authors for Mercurial<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">In case you need to find out who commited the first version of a file to a Mercurial repository, there is this little command that does so quickly.</span><br />
<br />
<pre><code>hg log -r 'first(file("path/to/file"))' --template '{author}\n' -f</code></pre>
<pre><code> </code></pre>
<pre><code></code></pre>
<span style="font-family: Arial,Helvetica,sans-serif;">This is using <span style="font-family: "Courier New",Courier,monospace;">hg log</span> together with <span style="font-family: "Courier New",Courier,monospace;">hg templating</span>. You can customize your output with stuff like {date|isodate} or {desc). <span style="font-family: "Courier New",Courier,monospace;">-f</span> follows through renames and removals.</span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-70713521888693129572013-04-18T15:04:00.003+02:002013-04-18T15:04:43.782+02:00Working with D3D9 device Reset()<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><i><b>...lost context and going fullscreen!</b></i> </span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">At work I got the opportunity (sigh) to work with some DirectX rendering for video pipelines.</span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">A lot of fun was spent in trying to make the graphics card behave correctly during a context restore. When switching fullscreen or changing modes there are very precise steps you must follow or you get very cryptic error messages (by the way using M$ tools is no fun at all and I'll explain why) .</span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">First of all when you switch to fullscreen you need to call Reset() on your device with the new backbuffer size, which *must* correspond to one of the resolution supported by your device (and don't forget to set the refresh rate too).</span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">Before doing so you absolutely need to delete any surface, shader and whatever you allocated with a Get* method, using a proper Release() call. Beware *not* to delete your d3ddevice [1]. Then you just recreate all surfaces and you are done, it make sense to reuse the same initialization code for this purpose.</span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">If you don't do this procedure you can get different results, but usually you'll just get a lot of <span style="font-family: "Courier New",Courier,monospace;">D3DERR_DEVICELOST</span> after a Present(), and only after it (so don't bother checking for this error anywhere else). Other rendering functions such as StretchRect() will just silently fail. </span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">In order to avoid leaks of any kind and check for other errors you might be tempted to use DirectX Control Panel and turn on the </span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Debug version of </span>DirectX. This might work, but beware that on some architectures (I'm looking at you, NVIDIA ION) you might get a lot of exceptions (especially in within Reset()) that make no sense at all [2]. While normally these reports are useful and the breaks help you find mistakes, sometime it just get frustrating when there is a bug on someone else's code. </span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So if you get desperate in debugging a perfectly working restoration code, just try disabling debug mode or run your code on another architecture...</span><br />
<br />
<span style="font-size: small;">[1] Actually you can delete the d3ddevice, but then you don't have to call Reset() and have to recreate both the <span style="font-size: small;">device and the surfaces again<span style="font-size: small;">. It works but screen <span style="font-size: small;">glitches a lot and it's a<span style="font-size: small;"> plain</span></span></span></span> waste of resources.</span><br />
<div class="r">
<span style="font-size: small;">[2] Error such as <i><span style="font-weight: normal;">"Lost Device Due to Display Uniqueness Change" </span></i><span style="font-weight: normal;">and </span></span><i><span style="font-weight: normal;"><span style="font-size: small;">"Could not get exclusive mode when we thought we could"</span></span></i><span style="font-weight: normal;"><span style="font-size: small;"><span style="font-size: small;">. If you <span style="font-size: small;">Google <span style="font-size: small;">them you'll get a lot of information on how to properly do a <span style="font-size: small;">context restore, but the solution <span style="font-size: small;">mi<span style="font-size: small;">ght be <span style="font-size: small;">closer than you thing.</span></span></span></span></span></span></span></span></span><i><span style="font-weight: normal;"><br /></span></i></div>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-17408312408309710022013-04-16T10:09:00.002+02:002014-03-24T05:48:42.917+01:00Finally one libvlc_video_set_format_callbacks() example<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">libVLC new (2.0) API for video size and chroma (</span><span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">libvlc_video_set_format_callbacks</span>) is much more powerful than </span><span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">libvlc_video_set_format</span>. It </span><span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">allows </span>either to get video size and chroma dynamically so that your rendering pipeline can adapt, or to modify such values to get the values you need.</span><br />
<br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">However, I find it a little more complicated to use and spent some time looking for an example. Apparently I am not alone, so I'll share my finding.</span><br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">The main source example I found is from FBVLC, a web browser plugin based on VLC. You can read the full source here: <a href="http://code.google.com/p/fbvlc/source/browse/FBVLC.cpp">http://code.google.com/p/fbvlc/source/browse/FBVLC.cpp</a></span><br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">Basically you need to create two functions with this exact signature</span><br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">static unsigned video_setup_cb(void **opaque, char *chroma, unsigned *width, unsigned *height, unsigned *pitches, unsigned *lines);</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><br />static void video_cleanup_cb(void *opaque);</span></blockquote>
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"></span><br />
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;">and as the names go initialize all variables in the first function and cleanup in the second one. You can find sample implementation in the previous source code, under the name of </span><br />
<div class="prettyprint ">
<span style="font-family: "Courier New",Courier,monospace;"><span class="pln">video_format_cb</span></span><span class="pun"> <span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and</span> </span><span style="font-family: "Courier New",Courier,monospace;"><span class="pln">video_cleanup_cb<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">.</span></span></span></div>
<div class="prettyprint ">
<br /></div>
<div class="prettyprint ">
<span style="font-family: "Courier New",Courier,monospace;"><span class="pln"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I spent some time in selecting the right <span style="font-family: "Courier New",Courier,monospace;">chroma<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"> </span></span>to adopt (and missed the fact that you had to <span style="font-family: "Courier New",Courier,monospace;">memcpy</span> there) for my standard h264 420 file "RV32" was working fine. Also the pitches variable is important, it represents the the video width in luma components, so for 420 it corresponds to <span style="font-family: "Courier New",Courier,monospace;">width * 4</span>.</span></span></span><span class="pun"></span></div>
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;"><br /></span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-31256439727517615042013-03-21T09:25:00.003+01:002013-03-21T09:25:20.252+01:00I want this bugfix<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Please commit it NAO</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><a href="http://savannah.gnu.org/bugs/?23273">http://savannah.gnu.org/bugs/?23273</a></span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-85837250719985390372013-03-06T15:05:00.003+01:002014-03-24T05:58:13.904+01:00CMake Linker Test Flags<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Source: <a href="http://www.cmake.org/pipermail/cmake/2011-July/045525.html">http://www.cmake.org/pipermail/cmake/2011-July/045525.html</a></span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">If you need to test linker flags, try out this code snippet, and make sure to unset the variable or subsequent tests will fail!</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"> </span><br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">include(CheckCCompilerFlag)<br />set(CMAKE_REQUIRED_FLAGS "-Wl,-z -Wl,noexecstack")<br />check_c_compiler_flag("" HAVE_NOEXECSTACK) #empty because we are testing a linker flag<br />if(HAVE_NOEXECSTACK)<br /> list(APPEND pascal_flags "-k-z" "-knoexecstack")<br /> if(NOT ${MINIMAL_FLAGS})<br /> set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_REQUIRED_FLAGS}")<br /> endif()<br />endif()<br />unset(CMAKE_REQUIRED_FLAGS)</span><br /><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span></blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-94204171876852222012-11-21T16:08:00.000+01:002014-03-24T05:58:35.299+01:00Dangerous history editing with Mercurial<i><b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">...let's be revisionist for once</span></b></i><br />
<i><b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></b></i>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I decided to stop worrying and love the bomb, it was time to edit the immutable repository history of Mercurial! Thanks to the power of hg I almost lost every changeset I was working on but in the end I succeeded in modifying a few past changesets.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I spent some time between documentation and tutorials so I'll sum up the most important commands with a brief description.</span><br />
<i><b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></b></i>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">You start off by populating your queue with a few revisions with </span><br />
<blockquote class="tr_bq">
<code>
hg qimport -r revision_start:revision_end</code></blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">this will generate one .diff file in <span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">.hg/patches</span></span> for each revision between <span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">revision_start</span></span> and <span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">revision_end</span></span>. Afterwards you remove every (with -a in the example) patch from your local repo, so that only the ones in .hg/patches exist. You do so with</span><br />
<blockquote class="tr_bq">
<code>hg qpop -a</code></blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and then you can edit whatever revision simply by modifying the equivalent rev.diff file. You can merge, delete and add changesets with</span>qdelete qnew qfold<br />
<code><code><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">When you are <span style="font-size: small;">done with modifications you just have to re-apply your revised <span style="font-size: small;">patches with </span></span></span></span></span></span></span></span></span></span></span></span></span></code> </code><br />
<blockquote class="tr_bq">
<code>hg qpush -a</code><code><code></code></code><br />
<code><code></code></code></blockquote>
<code><code><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">and complete the editing with</span></span></span></span></span></span></span></span></span></span></span></span></code></code><br />
<blockquote class="tr_bq">
<code>
hg qfinish -a</code><br />
<code></code></blockquote>
<code><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;"><span style="font-size: small;">Not bad.</span></span></span></span></span></span></span></span></span></span></span></code>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-76075674217803722892012-10-14T05:09:00.001+02:002012-11-21T14:47:23.445+01:00Achievements in BitFighter<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><i><b>...8 BitFighters make 1 ByteFighter</b></i></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Today I got mentioned in the credits of Bitfigher, a neat two space shooter multiplayer game.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<br />
<blockquote class="tr_bq">
<span style="font-family: "Courier New",Courier,monospace;">* BFLogBot Commit: 4a4fe6ac0503 | Author: buckyballreaction | Message: koda now belongs in the credits </span></blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I really appreciate the endless support from the developers while I break their sources!</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Check out this awesome game: <a href="http://www.bitfighter.org/">www.bitfighter.org</a>.</span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-66685861224176872002012-10-10T12:45:00.001+02:002014-03-24T06:12:50.633+01:00Breaking the Great Firewall<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><i><b>...breaking the law, breaking the law!!!</b></i></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">I'm in the main country of Asia on a work trip and I don't really like the censoring applied here. I will briefly explain how to use the Internet like it should be.</span><br />
<ol>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Set up a computer with an accessible IP address with an SSH server (I recommend doing this while you are still in your country)</span></li>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Connect using this line</span><blockquote class="tr_bq">
<blockquote class="tr_bq">
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">ssh -ND port <port><username>usrname@host</username></port></span></span><br />
<address>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">
</span></span></address>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;">
</span></span></blockquote>
</blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><b>-N</b> disables shell input</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><b>-D <port></port></b> is the port which will be forwarded to <span style="font-family: "Courier New",Courier,monospace;"><address>
</address>
</span></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><b>username</b></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><b><username>@host </username></b>is your ssh server</span></li>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Go to Firefox under <i>Options->Advanced->Network->Settings</i>, select <i>Manually enter proxy information</i>" and in the SOCKS section insert <span style="font-family: "Courier New",Courier,monospace;">127.0.0.1</span> <span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and <span style="font-family: "Courier New",Courier,monospace;"><port></port></span></span></span></span></li>
<li><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Enjoy your free internet</span></span></span></span></span></li>
</ol>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Now, traffic might be a little slow so I recommend using the <a href="https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard">Foxy Proxy</a> Firefox extension and manually set the website that are needing it. This extension replaces Firefox proxy implementation so you'll have to configure it again by creating a 'New Proxy' and inserting the site rules like in the example. Don't forget to activate the proxy and Foxy Proxy itself in the main page.</span></span></span></span></span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">By the way Blogger is normally blocked here, so you'll have to read this blog before leaving.</span></span></span></span></span>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-51584724831063493872012-09-20T16:02:00.003+02:002014-03-24T05:49:10.374+01:00How to cross compile from Linux to Windows, x264, VLC and Libav<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><i>...using latest modern tools!</i></span></b><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">X264 and VLC are two of the most <i>awesomest</i> opensource software you can find on-line and of course the pose no problem when you compile them on a Unix environment. Too bad that sometimes you need to think of Windowze as well, so we need a way to crosscompile that software: in this blogpost, I'll describe how to achieve that, using modern tools on a Ubuntu 12.04 installation.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[0] Sources</span></b><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">It goes without saying that without the following guides, I'd have had a much harder time!</span><br />
<span style="color: black;"><a href="http://alex.jurkiewi.cz/blog/2010/cross-compiling-x264-for-win32-on-ubuntu-linux"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http://alex.jurkiewi.cz/blog/2010/cross-compiling-x264-for-win32-on-ubuntu-linux</span></a></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><a href="https://bbs.archlinux.org/viewtopic.php?id=138128">https://bbs.archlinux.org/viewtopic.php?id=138128 </a></span><br />
<span style="color: black;"><a href="http://wiki.videolan.org/Win32Compile"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http://wiki.videolan.org/Win32Compile</span></a></span><br />
<span style="color: black;"><a href="http://forum.videolan.org/viewtopic.php?f=32&t=101489"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">http://forum.videolan.org/viewtopic.php?f=32&t=101489</span></a></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So a big thanks to all the original authors!</span><br />
<br />
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[1] Introduction</span></b><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">When you crosscompile you just use the same tools and toolchains that you are used to, gcc, ld and so on, but configured (and compiled) so that they produce executable code for a different platform. This platform can vary both in software and in hardware and it is usually identified by a triplet: the processor architecture, the ABI and the operating system.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br />What we are going to use here is <i>i686-w64-mingw32</i>, which identifies any x86 cpu since the Pentium III, the w64 ABI used on modern Windows NT systems (if I'm not wrong), and the mingw32 architecture, that is the Windows gcc variant.</span><br />
<br />
<br />
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[2] Prerequisites</span></b><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Note that the name of the packages might be slightly different according to your distribution. We are going to need a quite recent mingw-runtime for VLC (>=3.00) which has not yet landed on Ubuntu, so we'll take it from our Debian cousins.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Execute this command</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace;"><code>$ wget http://ftp.jp.debian.org/debian/pool/main/m/mingw-w64/mingw-w64-dev_3.0~svn4933-1_all.deb<br />$ sudo dpkg -i mingw-w64-dev_3.0~svn4933-1_all.deb</code></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and then install stock dependencies</span><br />
<div class="bash">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: large;"><span style="font-size: small;"><code><br /></code></span></span></span></div>
<div class="bash">
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><code>$ sudo dpkg -i gcc-mingw-w64 g++-mingw-w64</code></span></span><br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><code><span style="font-family: "Courier New",Courier,monospace;"><code><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">$ sudo dpkg -i pkg-config yasm subversion cvs git-core</span></span> </code></span></code></span></span></span></div>
<br />
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[3] x264 and libav</span></b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"> </span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">x264 has very few dependencies, just pthreads and zlib, but</span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"> it reaches its full potential when all of them are satisfied (encapsulation, avisynth support and so on).</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Loosely following Alex Jurkiewicz's work, we create a user-writable folder</span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-size: small;"> and then we prepare a script that sets some useful variables every time.</span></span><br />
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><br /></span></span>
<br />
<div class="wp_syntax">
<div class="code">
<pre class="bash"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">$ mkdir -p ~/win32-cross/{src,lib,include,share,bin}</span></span></pre>
</div>
</div>
<blockquote class="tr_bq">
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">#!/bin/sh<br /><br />TRIPLET=i686-w64-mingw32<br /><br />export CC=$TRIPLET-gcc<br />export CXX=$TRIPLET-g++<br />export CPP=$TRIPLET-cpp<br />export AR=$TRIPLET-ar<br />export RANLIB=$TRIPLET-ranlib<br />export ADD2LINE=$TRIPLET-addr2line<br />export AS=$TRIPLET-as<br />export LD=$TRIPLET-ld<br />export NM=$TRIPLET-nm<br />export STRIP=$TRIPLET-strip<br /><br />export PATH="/usr/i586-mingw32msvc/bin:$PATH"<br />export PKG_CONFIG_PATH="$HOME/win32-cross/lib/pkgconfig/"<br /><br />export CFLAGS="-static -static-libgcc -static-libstdc++ -I$HOME/win32-cross/include -L$HOME/win32-cross/lib -I/usr/$TRIPLET/include -L/usr/$TRIPLET/lib"<br />export CXXFLAGS="$CFLAGS"<br /><br />exec "$@"</span></span></span></blockquote>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Please not the use of the CFLAGS variables: without all the static parameters, the executable will dynamically link gcc, so you'll need to bundle the equivalent dll. I prefer to have one single exe, so everything goes static, but I'm not really sure which flag is actually needed. If you have any idea, please drop me a line.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Anyway, let's compile latest revision of pthreads (2.9.1 as of this writing)</span><br />
<br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ cd ~/win32-cross/src</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ wget -qO - ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-9-1-release.tar.gz | tar xzvf -</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ cd pthreads-w32-2-9-1-release</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ make GC-static CROSS=i686-w64-mingw32-</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ cp libpthreadGC2.a ../../lib</span><br />
<span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">$ cp *.h ../../include</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and zlib (1.2.7)<span style="font-size: small;"> - w</span><span style="font-size: small;">e need to remove the references to the libc library (which is implied anyway) otherwise we will get a linkage failure</span></span><br />
<br />
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cd ~/win32-cross/src
$ wget -qO - http://zlib.net/zlib-1.2.7.tar.gz | tar xzvf -
$ cd zlib-1.2.7
$ ../../mingw ./configure
$ sed -i"" -e 's/-lc//' Makefile
$ make
$ DESTDIR=../.. make install prefix=</span></pre>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></b>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Now it's turn for libav, so that x264 can use different input chroma and other stuff. If you need libav exececutables, you might want to change the configure line so that it suits you</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><b><br /></b></span>
<br />
<div class="wp_syntax">
<div class="code">
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cd ~/win32-cross/src
$ git clone git://git.libav.org/libav.git
$ cd libav
$ ./configure \
--target-os=mingw32 --cross-prefix=<span style="font-size: x-small;">i686-w64-mingw32</span>- --arch=x86 --prefix=../.. \
--enable-memalign-hack --enable-gpl --enable-avisynth --enable-runtime-cpudetect \
--disable-encoders --disable-muxers --disable-network --disable-devices
$ make
$ make install</span></pre>
</div>
</div>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></b>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">and the nice tools that give more output options</span><br />
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></b>
<br />
<div class="wp_syntax">
<div class="code">
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cd ~/win32-cross/src
$ svn checkout http://ffmpegsource.googlecode.com/svn/trunk/ ffms
$ cd ffms
$ ../../mingw ./configure --host=mingw32 --with-zlib=../.. --prefix=$HOME/win32-cross
$ ../../mingw make
$ make install</span></pre>
</div>
</div>
<span style="font-family: "Courier New",Courier,monospace;"><b><br /></b></span>
<br />
<div class="wp_syntax">
<div class="code">
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cd $HOME/win32-x264/src
<span style="font-style: italic;"># Create a CVS auth file on your machine</span>
$ cvs -d:pserver:anonymous@gpac.cvs.sourceforge.net:/cvsroot/gpac login
$ cvs -z3 -d:pserver:anonymous@gpac.cvs.sourceforge.net:/cvsroot/gpac co -P gpac
$ cd gpac
$ chmod +rwx configure src/Makefile
<span style="font-style: italic;"># Hardcode cross-prefix</span>
$ sed -i'' -e 's/cross_prefix=""/cross_prefix="<span style="font-size: x-small;">i686-w64-mingw32</span>-"/' configure
$ ../../mingw ./configure --static --use-js=no --use-ft=no --use-jpeg=no \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --use-png=no --use-faad=no --use-mad=no --use-xvid=no --use-ffmpeg=no \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --use-ogg=no --use-vorbis=no --use-theora=no --use-openjpeg=no \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --disable-ssl --disable-opengl --disable-wx --disable-oss-audio \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --disable-x11-shm --disable-x11-xv --disable-fragments--use-a52=no \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --disable-xmlrpc --disable-dvb --disable-alsa --static-mp4box \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --extra-cflags="-I$HOME/win32-cross/include -I/usr/<span style="font-size: x-small;">i686-w64-mingw32</span>/include" \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --extra-ldflags="-L$HOME/win32-cross/lib -L/usr/<span style="font-size: x-small;">i686-w64-mingw32</span>/lib"
<span style="font-style: italic;"># Fix pthread lib name</span>
$ sed -i"" -e 's/pthread/pthreadGC2/' config.mak
<span style="font-style: italic;"># Add extra libs that are required but not included</span>
$ sed -i"" -e 's/-lpthreadGC2/-lpthreadGC2 -lwinmm -lwsock32 -lopengl32 -lglu32/' config.mak
$ make
<span style="font-style: italic;"># Make will fail a few commands after building libgpac_static.a</span></span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-style: italic;"># (i586-mingw32msvc-ar cr ../bin/gcc/libgpac_static.a ...).</span></span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-style: italic;"># That's fine, we just need libgpac_static.a</span> </span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;">i686-w64-mingw32-ranlib bin/gcc/libgpac_static.a</span> </span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cp bin/gcc/libgpac_static.a ../../lib/
$ cp -r include/gpac ../../include/</span></pre>
<pre class="bash" style="font-family: monospace;"><span style="font-weight: bold;">
</span></pre>
<pre class="bash" style="font-family: monospace;"><span style="font-weight: bold;"> </span></pre>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Finally we can compile x264 at full power! The configure script will provide a list of what features have been activated, make sure everything you need is there!</span><br />
<br />
<div class="wp_syntax">
<div class="code">
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;">$ cd ~/win32-cross/src
$ git clone git://git.videolan.org/x264.git
$ cd x264
$ ./configure --cross-prefix=<span style="font-size: x-small;">i686-w64-mingw32</span>- --host=<span style="font-size: x-small;">i686-w64-mingw32 \</span></span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> </span>--extra-cflags="-static -static-libgcc -static-libstdc++ -I$HOME/win32-cross/include" \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --extra-ldflags="-static -static-libgcc -static-libstdc++ -L$HOME/win32-cross/lib" \</span></pre>
<pre class="bash"><span style="font-family: "Courier New",Courier,monospace;"> --enable-win32thread
$ make</span></pre>
</div>
</div>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">And you're done! Take that x264.exe file and use it wherever you want!</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Most of the work here has been outlined by</span></span> Alex Jurkiewicz in <a href="http://alex.jurkiewi.cz/blog/2010/cross-compiling-x264-for-win32-on-ubuntu-linux">this guide</a> so checkout <a href="http://alex.jurkiewi.cz/blog/">his blog</a> for more nice guides! </span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[4] VideoLAN</span></b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">On the other hand, VLC has a LOT of dependencies, but thankfully it also has a nice way to get them working quickly. If you read the wiki guide, you'll notice that it will use i586-mingw32msvc everywhere, but you should definitely avoid that! In fact that one offers a very old toolchain, under which VLC <i>will fail</i> to compile! Also the latest versions provides much better code, x264 will weight 46MB against 38MB in one case!</span><br />
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">So let's update every script to the more modern version i686-w64-mingw32! As usual, first of all get the sources</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<br />
<pre><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>git clone <span style="color: black;"><a class="external free" href="git://git.videolan.org/vlc.git" rel="nofollow">git://git.videolan.org/vlc.git</a> vlc</span></span></pre>
<pre><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>cd vlc </span></pre>
<pre></pre>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"></span><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">And let's get the dependencies through the contrib scripts, qt4 needs to be compiled by hand as the version in Ubuntu repositories doesn't cope well with the rest of the process. I also had to remove some of the files because they were of the wrong architecture (mileage might vary here) .</span><br />
<br />
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>mkdir -p contrib/win32
<span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>cd contrib/win32
<span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>../bootstrap --host=</span></span><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;"></span></span>i686-w64-mingw32</span></span>
<span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>make prebuilt</span></span></pre>
<pre class="bash"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span><code>make .qt4</code></span></span></pre>
<pre class="bash"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ rm ../</span></span>i686-w64-mingw32/bin/{moc,uic,rcc}</span></span></pre>
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>cd -</span></span></pre>
<br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">We now return to the main sources folder and launch the boostrap and configure process; you need some standard automake/libtool dependencies for this.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></span>
<br />
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>./bootstrap</span></span></pre>
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>mkdir win32 && cd win32</span></span></pre>
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>../extras/package/win32/configure.sh --host=i686-w64-mingw32</span></span></pre>
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span>./compile</span></span></pre>
<pre><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><span style="font-weight: bold;"><span style="font-weight: bold;">$ </span></span><code>make package-win-common</code></span></span></pre>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Let's grab something to drink and celebrate when the compilation ends! You'll find all the necessary files in the vlc-x.x.x folder. A big thanks goes to the wiki authors and j-b who gave me pointers on #videolan irc.</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span>
<b><span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">[5] Conclusions</span></b><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;">Whelp, that was a long run! As additional benefit you are able to customize every single piece of software to your need, eg. you can modify the libav version that you are going to use for Vlc as you wish! Also crosscompiling is often treated as black magic, but in reality is a simple process that just needs more careful configuration. Errors often are related to wrong paths or missing dependencies and sometimes a combination of both; don't lose hope and keep going until you get what you want!</span><br />
<span style="font-family: "Helvetica Neue",Arial,Helvetica,sans-serif;"><br /></span></div>
</div>
Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com2tag:blogger.com,1999:blog-2525284115839987373.post-63069620447610261192011-04-22T11:22:00.003+02:002014-03-24T06:29:09.795+01:00blog placeholderlong time no post<br />
yesterday was so memorable i needed to record it somewhere<br />
<br />
- i had breakfast with my parents<br />
- i was able to add an input format to <a href="http://bino.nongnu.org/">bino</a><br />
- i was able to make a Siano SMS1140 tuner working (needed <a href="http://www.steventoth.net/linux/sms1xxx/sms1xxx-hcw-55xxx-dvbt-01.fw">this file</a> renamed as <span style="font-size: 85%;"><span style="font-family: courier new;">dvb_nova_12mhz_b0.inp</span></span>)<br />
- i was able to change the fuse for my car plug that blew two weeks ago<br />
- i was able to change one light lamp of my car<br />
<br />
\o/Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-64427707201045577432011-01-14T09:57:00.003+01:002014-03-24T06:29:41.934+01:00vimeo rocksSo i decided to post my videos on Vimeo, with english subtitles<br />
<br />
<span style="font-weight: bold;">Attesa</span> - <a href="http://vimeo.com/18759147">http://vimeo.com/18759147</a><br />
<span style="font-weight: bold;">Ulysses' Syndrome</span> - <a href="http://vimeo.com/18763331">http://vimeo.com/18763331</a><br />
<span style="font-weight: bold;">Out of order</span> - <a href="http://vimeo.com/18765477">http://vimeo.com/18765477</a><br />
<br />
and to celebrate this move, here is my first timelapse<br />
<br />
<span style="font-weight: bold;">Waiting for light</span><br />
<iframe frameborder="0" height="300" src="http://player.vimeo.com/video/18766592" width="400"></iframe><br />
<a href="http://vimeo.com/18766592">Waiting for light</a> from <a href="http://vimeo.com/user2562992">Vittorio Giovara</a> on <a href="http://vimeo.com/">Vimeo</a>.Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-72389831892824221972010-11-21T03:34:00.003+01:002014-03-24T06:10:40.401+01:00glBegin to vertex arraysSo even though i already did some conversions from opengl to opengles, i cannot remember what and how i did! here is a little reminder<br /><blockquote style="font-family: courier new;"><span style="font-size:85%;"><br /> glBegin( GL_QUADS );<br /> glTexCoord2i(0, 0);<br /> glVertex3f( 0-(ButtonSprites[index].Width/2), 0-(ButtonSprites[index].Height/2), 0 );<br /><br /> glTexCoord2i(1, 0);<br /> glVertex3f( 0+(ButtonSprites[index].Width/2), 0-(ButtonSprites[index].Height/2), 0 );<br /><br /> glTexCoord2i(1, 1);<br /> glVertex3f( 0+(ButtonSprites[index].Width/2), 0+(ButtonSprites[index].Height/2), 0 );<br /><br /> glTexCoord2i(0, 1);<br /> glVertex3f( 0-(ButtonSprites[index].Width/2), 0+(ButtonSprites[index].Height/2), 0 );<br /> glEnd();</span></blockquote><br /><br />get converted into<br /><br /><blockquote style="font-family: courier new;"><span style="font-size:85%;"> int numvertices = 4;<br /> glEnableClientState( GL_VERTEX_ARRAY ); // Enable Vertex Arrays<br /> glEnableClientState( GL_TEXTURE_COORD_ARRAY ); // Enable Texture Coord Arrays<br /><br /> float* vertices= new float[3*numvertices]; //3 coordiantes per vertex<br /> float* textcoord= new float[2*numvertices]; //2 texture coordiantes per vertex<br /><br />//fill in your array of vertices and texture coordinates with data<br /> textcoord[0] = 0;<br /> textcoord[1] = 0;<br /> textcoord[2] = 1;<br /> textcoord[3] = 0;<br /> textcoord[4] = 1;<br /> textcoord[5] = 1;<br /> textcoord[6] = 0;<br /> textcoord[7] = 1;<br /><br /> vertices[0] = -(ButtonSprites[index].Width/2);<br /> vertices[1] = -(ButtonSprites[index].Height/2);<br /> vertices[2] = 0;<br /> vertices[3] = (ButtonSprites[index].Width/2);<br /> vertices[4] = -(ButtonSprites[index].Height/2);<br /> vertices[5] = 0;<br /> vertices[6] = (ButtonSprites[index].Width/2);<br /> vertices[7] = (ButtonSprites[index].Height/2);<br /> vertices[8] = 0;<br /> vertices[9] = -(ButtonSprites[index].Width/2);<br /> vertices[10] = (ButtonSprites[index].Height/2);<br /> vertices[11] = 0;<br /><br /> glVertexPointer( 3, GL_FLOAT, 0, vertices ); // Set The Vertex Pointer To Vertex Data<br /> glTexCoordPointer( 2, GL_FLOAT, 0, textcoord ); // Set The Vertex Pointer To TexCoord Data<br /><br /> glDrawArrays( GL_TRIANGLE_FAN, 0, numvertices ); //Draw the vertices</span></blockquote>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com0tag:blogger.com,1999:blog-2525284115839987373.post-74581250969301960522010-09-16T23:17:00.004+02:002014-03-24T06:10:40.406+01:00we made it! Hedgewars on AppStoreFINALLY!<br />
After almost 1 year of work, the porting is done!<a href="http://itunes.apple.com/us/app/hedgewars/id391234866?mt=8"><br />http://itunes.apple.com/us/app/hedgewars/id391234866?mt=8</a><br />
man what a load of work! but i feel proud now :D<br />
<br />
some of the reactions:<br />
<burp> <span style="font-weight: bold;">burp</span>: wee!<br /><burp> <span style="font-weight: bold;">burp</span>: awesome<br /><smaxx> <span style="font-weight: bold;">Smaxx</span>: apple doesn't grant proper credit to me<br /><smaxx> <span style="font-weight: bold;">Smaxx</span>: let's call the fsf<br /><tiy> <span style="font-weight: bold;">Tiy</span>: \o/<br /><tiy><span style="font-weight: bold;">Tiy</span>: \o\o\o\o<br /><tiy> <span style="font-weight: bold;">Tiy</span>: o/o/o/o/<br /><br />good job guys</tiy></tiy></tiy></smaxx></smaxx></burp></burp>Vittoriohttp://www.blogger.com/profile/00218389147439575076noreply@blogger.com1