
Thanks for the analysis, this clarifies things greatly. Feasibility and scope is a big part of how we determine what projects to work on. gtener:
On Wed, Feb 11, 2009 at 21:00, Jamie
wrote: Hi Gwern,
On Wed, 11 Feb 2009, Gwern Branwen wrote:
I just checked H.263 and it looks like it does not require patent licensing at all (it is created by ITU-T Video Coding Experts Group (VCEG)) so one can write H.263 in Haskell and release freely without patent licensing issues.
So writing H.263 in Haskell could be a good GSoC project. One mentioned that GHC produce slow code, well H.263 could be a good test case to improve GHC optimization over time. In The Computer Language Benchmarks Game, Haskell has some catching up to do. :)
It does sound like a reasonably discrete task, and it sounds like you have a use for it; but I wonder if it's doable in a single summer?
I have no idea, I have not dig deeper into H.263 C source code but I guess it should be quite trivial as it is a black box with video frame input and output with several parameters for encoding and just frame in/out for decoding.
I didn't dig into the source code either, but I've just skimmed through Wikipedia page on that codec: http://en.wikipedia.org/wiki/H.263 and in seems far from trivial. Anything that has 23 annexes is likely to be quite complex :-) Therefore I seriously doubt chances for success of such project. I did some checks: in libavcodec at least following files consist of implementation of H.263:
h263.c h263data.h h263dec.c h263.h h263_parser.c h263_parser.h
How many lines are there?
[Tener@laptener libavcodec]$ wc h263* 6295 19280 218932 h263.c 314 2117 10423 h263data.h 816 2171 26675 h263dec.c 46 217 2032 h263.h 91 282 2361 h263_parser.c 29 165 1047 h263_parser.h 7591 24232 261470 razem
In Haskell project one would also need to provide some additional utility code which is part of libavcodec. Fast grep shows the tip of an iceberg:
[Tener@laptener libavcodec]$ grep include h263* | grep -v "<" h263.c:#include "dsputil.h" h263.c:#include "avcodec.h" h263.c:#include "mpegvideo.h" h263.c:#include "h263data.h" h263.c:#include "mpeg4data.h" h263.c:#include "mathops.h" h263data.h:#include "mpegvideo.h" h263dec.c:#include "avcodec.h" h263dec.c:#include "dsputil.h" h263dec.c:#include "mpegvideo.h" h263dec.c:#include "h263_parser.h" h263dec.c:#include "mpeg4video_parser.h" h263dec.c:#include "msmpeg4.h" h263.h:#include "config.h" h263.h:#include "msmpeg4.h" h263_parser.c:#include "parser.h" h263_parser.h:#include "parser.h"
Bottom line: I don't think it is reasonable to assume anyone without previous knowledge of H.263 is able to fit that project into one summer. But! It's Haskell community, and people here see the impossible happen from time to time ;-)
All best
Christopher Skrzętnicki _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe