On Thu, 12 Feb 2009, Conrad Parker wrote:
2009/2/12 Don Stewart <[email protected]>:
Thanks for the analysis, this clarifies things greatly.
Feasibility and scope is a big part of how we determine what projects to
work on.
I agree that it's beyond the scope of a SoC project.
Rather than H.263 or H.264 I was going to suggest implementation of
Theora or OMS, both of which avoid the patent issues and have publicly
available specs:
http://theora.org/doc/Theora.pdf
http://www.openmediacommons.org/collateral/OMS-video-v0.9.pdf
Scanning those documents should give anyone a fair idea of the amount
of work involved. My understanding is that OMS is of a similar
complexity to H.263, and H.264 is more complex than any of these.
For Theora playback we've found that the largest CPU load comes from
colorspace conversion, where the YUV output of the codec needs to be
converted to RGB for some targets (like Firefox). That is some fairly
straightforward array processing, and would be a good place to start
for anyone trying to implement video codecs in Haskell.
That is great idea and a great seed to plant. Wonder if Theora is as good
as H.264 in terms of video quality and bandwidth usage?
Theora codec is being used in Ekiga (popular SIP/H.323 video softphone but
that thing keeps crashing on me :( )
Jamie
Conrad.
gtener:
On Wed, Feb 11, 2009 at 21:00, Jamie <[email protected]> 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?
[te...@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:
[te...@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
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe