[Mesa-dev] GSoC : Video decoding state tracker for Gallium3d

Hi everyone, My name is Emeric, I am a 22 years old french student, and I am currently looking to apply to the google summer of code 2011. I saw the "Gallium H.264 decoding" idea on the X.Org GSoC page, and I am particularly interested by this project. The idea would be to use shaders to do some work, in order to write a generic video decoding solution, targeting r300g, r600g, nouveau, and basically all Gallium3d drivers. The project would be to write a state tracker wich expose some of the most shaders-friendly decoding operations (like motion compensation, idct, intra-predictions, deblocking filter and maybe vlc decoding) through a common API like VDPAU or VA-API. These APIs can be used to decode mpeg2, mpeg 4 asp/avc, vc1 and others, but at first I intend to focus on the h264 decoding to save time, because I know it better and it is currently widely in use, but again the goal of the project is to be generic. * I am well familiar with the h264 specification and implementation, I can understand the amount of work required on that side. * I have some understanding of how a graphic card works, what could be and what should not be done with it, but I am not used to write shaders programs. But hey, this is the fun part, and I am definitively here to learn. * As I see it there is no easy or magical gains when using shaders to compute stuff like motion compensation or idct, but there are probably some things that can be done to smooth over the decoding of high bit-rates videos. Beside with the emergence of h265 in the next years, it seems that there will be more and more computational power involved (bigger transform size, much more intra and inter prediction schemes, insane resolutions, ...), so I think spending some time preparing to that could be a good idea. Ok, so that being said, I do have some questions for you. - First of all, does this project seems to be a good idea, would you be interested in it ? - As the time to realize this project will be quite limited, what would be the tasks to achieve in priority ? - What API would be better suited for the state tracker, vaapi or vdpau ? - I understand my entry point into this project should be the g3dvl state tracker and the mesa pipe-video branch, I'd like to learn more about the state of these work. - Should I cross-post this on xorg or xorg-devel maillist ? Thanks for reading me, and I want to apologies if some parts of this mail are hard to understand, I am not an english native speaker, mistakes may have been made :-) If there is anything that I forgot or that I should detailed do not hesitate to tell me. Respectfully, Emeric Grange