Feb 06

First of all I’m eventually snapshotting a newer ffmpeg, I’ll need some help to get it play nice with all the other applications. The new ffmpeg has lots of improvements but it changes its api slightly so every application should update accordingly, time has passed so I hope upstream caught up with the change.

Once it will be unmasked I’ll hopefully put the next release of feng in portage, currently I’m studying lighttpd internals in order to

  • Have feng using the same lighttpd syntax for configuration
  • Improve its behavior as server

So far I started importing lighttpd datatypes and lemon based parser directly in a separate branch and reshaping a bit feng in order to make it more rational. First thing learnt from lighttpd: keep everything in instance variables.

In the other news my alubook got its fan broken (and the tibook is in the same sorry shape), if you know where to find replacement parts for it please tell me (bonus if they aren’t that pricey).

Jul 24

I had been busy doing my usual load of random stuff, most not completely gentoo related, some a bit more.

Let’s start with the nicer ones: Marco spent lots of time and eventually it paid off, ffdirac now supports Iframes just fine, it’s quite an important step! As mentor I hadn’t to do much beside watching the evolution of the code and suggesting course of action. In the other news there is a new dirac spec released just today, probably some of the changes are due Marco’s work =)
Today we tried to do some hackery to get git-svn play nice with the braindamage we have on the ffmpeg soc svn. Sadly my side works great, his side not (fetching from svn and pulling to an ffmpeg.git branch works, pushing back to svn not).

About the dirac project I must say that they started with the right frame of mind from day 0, I couldn’t find a group more open to discussion and suggestion, no matter if were things like “It’s wrong to implement dirac in C++, nobody would use it” or “the latex pdf output as you made it is unreadable. I hope to eventually have the time to get texlive working or find something that converts the tex files to docbook and provide a better pdf for them, really I cannot stand reading it for more than 5min… Now I hope this summer of code effort will lead to get a better dirac overall (and that eventually BBC will use it for streaming their fine contents, oh, did I mention that I have a student on my university that should work on getting dirac-rtp a reality? check LScube in the next month)

To sum up, I’m quite happy with this summer of code experience and I thank Marco again for being a great person to work with.

While we are at it some more informations about ffmpeg related efforts, I eventually hacked again a bit on roundup resulting in fixing/workarounding some problems with the email integration, if you happen to have some problems on ffmpeg please give it a try.

Beside that, my work at LScube is still going on, sucking lots of my time… Lately I tried to add more packetizers to feng but w/out much success, looks like my aac implementation is a *bit* wrong, usually relooking at it after a while helps me fixing the issue (as I did for h264) I hope to have it (and many more) completed for the next release. On the client side libnemesi is still waiting for more depacketizers while Alessandro is cleaning up the network stacks, making it less quirky.

Now I could speak of gentoo related stuff, I’m trying to fix some of the programs still using the img_* interface, since it is an annoying task I waited a bit hoping upstream would adapt… No reaction so far so I’m starting with something simple as blender and then hopefully move on other ones. What sucks about the img -> sws move is that sws is less commented, has quite ugly but performant code and it’s a pain to hack on, I started to clean it up but then got sidetracked so there are still some patches waiting completion…

I guess this is a post long enough, probably I’ll add another update tomorrow.

Jun 01

You may wonder what I’m doing since has been a long time since the latest blog item, well I was busy trying to do too many thing, searching, traveling and so on.

Here a summary:

- I eventually released feng as you can see on http://live.polito.it
That involved getting the website up, writing lots of documentation (that hopefully someone will read), hacking the code to be in the right shape and making the whole bundle bearable for people with less understanding of autotools and dependencies… I hope the first release isn’t that ugly and I thank dario and alessandro for their help =)

- The ffmpeg bug tracker is taking shape eventually, hacking roundup isn’t the simplest thing in the world
mostly because examples and alternate templates aren’t available; the documentation saves the day most of the times anyway. you may see it on https://roundup.mplayerhq.hu/roundup/ffmpeg/

- On the cell side I started hacking a bit the build system in order to have it working for me (using gentoo, standard paths and stock gcc toolchain) and for the ones that are using the IBM sdk/fedora (bogus paths, shortened prefixes) I hope the people in charge of deciding what would be the standard for writing and running spu code would provide a sane default. Hopefully one I’ll have more time I’ll start writing something on my own, so far I’m just testing pathes and contributions by others ^^;

- the vorbis and theora rfc are proceedings and currently feng and gst are interoperable, I hope to complete the standardization and move to something else, it’s taking too much!

- my altivec work on cairo is still on hold, I hope to get enough time to push an update (since the ibm/sony mathlib has an implementation of vector integer division I could rip it and add some more vector ops in pixman).

- the SoC with ffmpeg has already started, so far I’m receiving some good feedbacks from my student and I’m trying to find the time to reread the dirac spec in order to follow him better.

That’s more or less all, the keyword of the whole document is TIME, lately the lscube involvement took a bit too much mostly because you cannot manage the time well if you have your plans spoiled every by unexpected priorities appearing out of the blue.

Apr 07

I spent much of my time trying to get the whole LScube project more alive, so far it’s just a slow start:

I moved the development to git ( https://live.polito.it/gitweb ) and now I’m trying to update the website to a newer drupal and with more documentation. Since the forums are just a spam magnet I guess I’ll nuke them, if you want to contact us just use irc or email =P

I put the efika in use to stress test the streaming server, you can watch

rtsp://130.192.86.166/tc.mov

or

rtsp://130.192.86.166/ed.mov

(both streams are h264+mp3, not many clients could handle that… Yet)

Hopefully a Feng release will appear soon.

That’s for the streaming stuff.

Now, I have a ps3 working and eventually managed to configure and install it, I already found something itchy: git’s ppcsha1+64ul == KaBOOM, I hope it’s just due my test with bleeding edge compilers but I’m afraid not. So far I’m quite impressed by the ps3, just a pity I’m slow in doing something nice there…

More will follow

lu

Mar 07

Just a quick update :

- got the ps3 running and well, I must say that its quite cool
- got swamped in many other things and so I’m slowly configuring my network to get the ps3 on, in the process I managed to brick my first access point (a belkin that now I’ll have to hack a bit to recover if possibile…)
- the lscube tasks are proceding nicely, currently we eventually ironed out some bugs due mp3 and the compositing layer, for the ones not following: I’m working on a new streaming server called Feng, currently it streams h264 and mp3 and let you either just point an url to a container and automagically provide a sdp or, more interesting, let you define a special editlist so you can just provide a simple textfile with the files and the start and stop time and have aggregated streams on the fly, pretty interesting if we manage to complete it and then make it usable =)
- I still have to fix B frames support in h264 and then move on improving those framers or eventually implement vorbis and theora, the gst crew beat me at it but I’d like to be at least a close second ^^;
- I hope to cleanup the roundup setup and the site restyle for lscube soonish once the previous task got addressed since I’d like to get more people involved and the current framework still has some rough edges…

- I’ll start probably hacking on the bfin due a course I’m attending, I cannot say I really like the arch since is a bit irregular, still much nicer than x86 (expect ffmpeg patches about it soon^^)

- last but not least I have my laptop eventually back!

that said I guess you may know why I’m not much reactive on bugs (I promise I’ll try at least the blender ebuild and to provide updates to ffmpeg and mplayer ones during the week end) and I less than lively…

PS: Cocoa programming isn’t that nice…

Feb 18

It was quite a busy week, we (me and dario) eventually end up gaining full access to our lab and got all the duties our previous mentor and colleagues had at lscube.

We had been at ONU for our first webcast in Geneva. The place was quite nice and the people were absolutely great =). Once we got back in Italy we spend some time preparing the feed for storage and preparing a new release for fenice (did we tell the 1.12 was the last? well not really since felix was missing….) and felix, the live feeder.

Hopefully tomorrow I’ll set up everything for a proper release and then move to fenice-ng or fe.ng and libnemesi, while we were travelling I eventually fixed the h264 packetizer so now fe.ng can stream h264 and mp3 correctly =) Once I get also libnemesi supporting it I’ll do at least as rc snapshot. Dario worked quite hard to improve the scheduler in order not to choke on certain bad behaviours from a certain well known client…

Now I have a big news: I eventually got a ps3 =) It is japanese model sony graciously lent me for a while ^^ Sadly the label on says 100V~3.8A 50/60Hz and that means that I have to get a voltage converter… Luckily Geert pointed me a nice german shop with good prices, http://www.thiecom.de, I hope what I ordered (correcting at the last minute a product mismatch, I hope the order change email reached otherwise I’d get a 110to220 that is exactly the opposite I need…) will arrive next week since I want to check myself the new livecd and maybe complete the step by step docs.

I eventually complete the fbcompose altivectorization in cairo (check the mailing list for the patch) and hopefully now there is enough to start benchmarking it…

Now the sad news: my Alubook hd died, I’m trying to recover as much as possible and then send it for repair (this time I have a full applecare and I’m going to use fully ^^ ), so I won’t as much available as I was before for more or less 2-3 weeks, hopefully.

I guess that’s more or less all.

Nov 15

- Ps3/Cell: I eventually fixed the binutils in order to get it build for spu-elf, I’m about to unbreak better gcc since someone thought NOTE_INSN_EXPECTED_VALUE wouldn’t be of any use, while the spu.md is using it for the cmp instructions… (needless to say my workaround isn’t working that well…), tomorrow hopefully I’ll update the patchset either with the revert of this patch or with a proper solution (hard since I’m not that proficient in gcc internals =/), I’m afraid of glibc…

- Fenice/lscube: trac + git is a no go, trac itself or setuputils on the fedora server that is streaming is from bad to idiotic or maybe it’s just me unproficient, add also that gitweb seems unavailable as fedora and you get an interesting picture, importing is easy, working almost (once everybody figures the commands), so there some uncertain about a full transition.

- Personal life: You can use anything happens to you to improve, still I’m afraid I won’t develop the ability to teleport and/or timeshift in order to improve the situation, anyway I’m unfeeling better.

- University: I’m forced to do something in mono for an exam and obviously I have about 30h to learn enough gtk# to do that, luckly glade is always glade…

Oct 19

I prepared some new snapshots in line with the newer x264, ffmpeg will be replaced soon since there are already some minor known issues, mplayer should be sane enough.

I hope I didn’t forget anything in the ebuild.

Have fun

Oct 14

After getting some sense about memcpy and h264 (ok, my sample was short enough to make relevant some optimizations that apply just on codec init, thus meaningless) I eventually got something in that seems to be relevant enough and tool quite few lines: I enabled prefetch.

It is pretty much a single asm line and in certain cases it meant a 10% of overall decoding time shaved away. Before I tried using altivec prefetch and it didn’t show a great result so I just removed it, 2 days ago I implemented it with the generic instruction and the result was pleasant enough.

If you happen to have non G4 systems please try to benchmark mpegvideo and h264 decoding for me and report results, the commit revision is 6669

Hopefully I’ll try to provide a snapshot for gentoo in this weekend.

Sep 27

Ok, the title is misleading on purpose, as you can see from the previous post I got some requests about ffmpeg+ppc (power, cell, plain ppc), in the case of h264 I’m afraid all the useful bits are already vectorized and the little left around will be useful but isn’t really top priority (obviously I’ll try to be on par with i386 optimizations, so weight and loop filter funcs will have their respective in altivec sooner or later). Other codecs have lots missing vectorization wise, say vp{3,5,6} family that many could like/need because of flash embedded videos, or some quick asm bits could be quite useful for our lil embedded ppcs the same way they are already useful and implemented for arm.

My plan for the next week is keep reordering code and put it back in arch specific dirs so it could be implemented in a more agile way (see what I did for the mathops or what I’m about to try for the bitstream read/write functions), hopefully I’ll complete and commit some altivec optimizations like the mdct (even if I should check if in altivec makes the difference or not), the vp idct variant or the h264 latest bits.

I’ll be unavailable for the week end, see you monday =)