Mustelidae.fr

To content | To menu | To search

GSoC : Day 1

Here we start :)

This is the first real GSoC post, hurray \o/

Continue reading...

Recent VLC patches

Hi,

This is a follow up from the previous post, and a little more :)

Continue reading...

Using VLC with Qt-Creator

QtCreator is great, really really great, so why don't using it when browsing/editing/patching vlc source code ? This article is based on the original Jean-Baptiste Kempf post, in the vlc-devel mailing list.

Continue reading...

Getting into VLC source code

As VLMC is built uppon VLC, I'll frequently have to take a closer look at the source code... At the moment, we have an annoying bug : when we ask for a media player to play a media, it's supposed to fire a "libvlc_MediaPlayerPlaying" somehow (at least it works for most of the media), but it doesn't with a specific mpeg file... let's try understanding why o//

Continue reading...

GSoC : Let's get started !

Hi everyone !

It's been a looooong time since I've post anything arround... but this is about to stop, since I'm going to participate to the 2009 edition of the Google summer of code, for the VideoLAN project, more preciselly for the vlmc project (www.vlmc.org)

Just a few words to present the project : The aim is to provide a simple but powerfull video editing software, based on vlc.

At this time, it doesn't do much, just video loading, getting a snapshot and some meta informations, and a basic timeline that doesn't do much either.

In the next days, we will have to enable a basic workflow, so that we will be able to concatenate two videos. Once this is done, the fun part will begin ! My work during this gsoc will consist of conceiving an effects/transition API, add some functionnality to the timeline widget (in order to reflect whan can be done with the API), and probably many things that hasn't be though of right now :p

I'll try to keep the blog updated, as the features appears on the project :)

By the way, a big thanks to VideoLan association president Jean Baptiste Kempf, and to my mentor and friend, Ludovic Fauvet :) Some kisses to the vlmc team, which will go on vacation this summer, while I'll be coding :D

Cuda... episode 2

Le premier programme en cuda, c'est fait, maintenant il serait bon de ne pas avoir a se prendre la tete avec les allocations memoires, ou tout du moins les simplifier un peu...

Continue reading...

Shader loading class

For a little project I'll probably speak about here someday, I wrote a shader loading class to ease my pain, as i was discovering shaders...

Continue reading...

First steps in CUDA

I really want to throw myself in CUDA, so here I go. The first step will be to create a simple project, that runs under visual studio.

Continue reading...

Calling contructor without parameter

Maybe something like that already happens to you : You wan't to build an instance of your class without calling the constructor :

class   A
{
    private:
        A(){};
        ~A(){};
};
 
int main()
{
    A   a();
}

But this will compile on g++ without any problem... why is that ? Because you're not building an instance of your class, your declaring a function called "a", which will return an instance of A. If you pass parameters, g++ will understand this a a constructor call, but if you wan't to call a 0 parameter constructor, you will have to call your CTOR without parenthesis...

The almost useless c++ trick of the day

When I learn c++, I remember my teacher telling : "A pure virtual method is a method without implementation", well that's not entirelly true... Actually, you can have a method beeing both pure virtual, and implementated. How is that possible ? well i must say that I don't know, since every assertions I ever made concerning how a compiler handles pure virtual methods was using the fact that a pure virtual was a null pointer in the class vtable... since you can have a body in it, it's obviously not null anonyme...

Anyway, implementing a pure virtual method is quite easy :

class  A
{
public :
	virtual   void pureVirtual() = 0
        {
            std::cout << "Me love otters" << std::endl;
        }
};

And this will compile without any problem !

The comportment of an implemented pure virtual method is quite simple, like any other pure virtual method, it prevents your class from beeing implemented. So here you can't have

A* a = new A();

it would print the usual error message : cannot instanciate abstract class. But what you can do, is call the implementation from a inherithed class of A, so here, you could do :

class B : A
{
public :
	virtual   void pureVirtual()
        {
            std::cout << "Not pure virtual anymore" << std::endl;
            A::pureVirtual();
        }
};
 
int main()
{
    B*b = new B();
    b->pureVirtual();    
}

which would print :

Not pure virtual anymore
Me love otters

And the worst part, is that even if a implemented pure virtual method seems a little bit of a non sense, not only it can be done, but it could be usefull, if you want to provide an interface with a default behavior, or probably many things else :)

Of debugging efficiency

Important part of the developpment process is "wasted" in debugging. The most used technique (or at least, the technique I most observed at school) is the good old printf technique, or for c++ programmers std::cout/cerr, but there are a few drawbacks with this technique :

  • You need to recompile your code
  • Both printf and std::cout are buffering the data you want to print, and in some case, it can hide your memory allocation bugs, and your code will run with the debug stuff, but will crash without.
  • It's hard to get some informations about which function called this one, or about the entire callstack
  • It's annoying to get the process id, but mostly the thread id, in case multithreaded program developpment.

But like every problem, there's a solution, that isn't used enough considering the advantages it offers.

In visual studio, a breakpoint isn't just about pausing the execution when reached, it's a lot more, and I invite you to read the following arcticle

Continue reading...

OpenCL

Hi all, With almost 2 month late, i would like to point out the great news that OpenCL is :
Right now, the GP/GPU solutions are :

  • CUDA for NVidia hardware
  • CTM for AMD(ATI) hardware

which is sad for developpers, since we (and by we, I mostly mean I) don't want to have to use 2 APIs, and 2 languages, of different abstraction levels (CUDA is "high" level, where CTM is close to hardware (or to metal in that case \o/))
Considering NVidia goes well with CUDA, we could have bet on CTM death, but what's gonna happen is far better : OpenCL will born "soon", and will provide a unify way to use your GPU's power.
Gigaflop and mass parallel programming, here we are ! (as soon as specification and compiler will be out, which lets us a few years at least)

Let's wish good luck to the Khronos group which have to write the standards !

Hello World

Hi all, Welcome on this blog. This isn't my first attempt, but i'll make my best to keep this one up to date. This won't be much of a "mylife" blog. More likely, this will be a technical blog.

But first of all, It would be best to introduce myself : I'm Hugo Beauzee-Luyssen, 21 years old, studying computer science in Epitech (Paris), and currently in internship at Ubisoft Paris, as a gameplay engineer. I've felt a need to share my developer experience since for a while, and here it is.

I'm currently working on a raytracer with a friend, this will be an excuse for writing a bunch of articles, but i'll write a new post a soon as i find a new trick, a new technique, or just something worth looking.

Even if i'll do my best, I apologize for any grammatical mistakes that could haunt my posts ;)

Ho and if you ask why mustelidae.fr, the answer is quite simple : everyone has a favorite debug word. In my school, some use "toto", others use "bite", you can even find some "chiche donne nous tout", but I prefer to use "loutre", which is the french word for "otter". Since I had to write course for 2nd year students, I used otters in every of my exemple, and so i was known as the man who loves otters. As you probably don't know (or maybe you do ?) otters are from the mustelidae animal familly (http://en.wikipedia.org/wiki/Mustelidae), and this is why my website is "mustelidae.fr" :)

I hope you'll enjoy reading the articles i'll post here, and event learn a few things !