caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Adrien <camaradetux@gmail.com>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Operators for Int64 and Int32
Date: Fri, 4 Apr 2008 19:58:00 +0200	[thread overview]
Message-ID: <666572260804041058hdf6e6aclf52cc8a1ee812090@mail.gmail.com> (raw)
In-Reply-To: <20080404124729.460bc323.mle+ocaml@mega-nerd.com>

2008/4/4, Erik de Castro Lopo <mle+ocaml@mega-nerd.com>:
> Richard Jones wrote:
>
> > I know that libsndfile is written in C, but I'd be interested to know
> > how much bitmatch
> > (http://et.redhat.com/~rjones/bitmatch/html/Bitmatch.html) might or
> > might not make a putative OCaml version easier to write.
>
> The hard bit has almost nothing to do with programming language
> and almost everything to do with WAVE (and AIFF and all the other
> formats) being extremely poorly and/or loosely specified, with
> over 100 data encoding variants and dozens of broken implementations
> in the field.
>
> Very early in the libsndfile development process I came up with
> a good way of packing and unpacking the headers (ie effectively
> the same  functionality as bitmatch) and everything has been
> built on top of that.
>
> Erik
>

I have to complain too about RIFF which is the format for the wave
container which is usually used for pcm. I, with two friends have been
working on a project involving sound and we needed to decode wave
files (to get their Fourier transform). I too have written a parsing
library. It took me some time to get the idea right but in the end, it
boiled down to six or seven lines of code.
However, writing the format description has been a real nightmare : I
found three different documents, started to implement from one which
turned out to be incomplete and incorrect, then moved on to the second
which too had problem (though less) and only the third, which was by
far the most complex of the three and complained about the format all
the time, gave me a proper reference.

But if you want the worst of the worst, have a look at the
edonkey-emule protocol. It's basically a reversed-engineered protocol
made for mldonkey, reused in emule, modified in the most inconsistent
way by tens of people pretending to keep backward compatibility with
clients that can't connect anymore to the network.
I tried to implement this but completely gave up after several days
without writing anything useful.
And by the way, I wanted to congratulate the mldonkey devels who
managed to implement these protocols (with the best algorithms too ;)
).


As for my library (I'm sure someone will ask about it), it is
basically used like Bitmatch. When I saw the Bitmatch release, I
translated Richard's examples to my library. I took me a few minutes.
It would benefit from some sugar but I don't know camlp4 (yet).

If you want you can have a look at the examples here :
http://ocaml.yaxm.org/wiki/doku.php?id=binary_parse#examples
I'll probably make some release this week-end if I find enough time (I
already have to get a new ID card as mine has just been stolen).


 ---

Adrien Nader


  reply	other threads:[~2008-04-04 17:58 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-03 14:08 Michał Maciejewski
2008-04-03 15:24 ` David Allsopp
2008-04-03 15:44   ` Bünzli Daniel
2008-04-03 19:00   ` David Thomas
2008-04-03 19:50   ` Michał Maciejewski
2008-04-03 22:22     ` Jon Harrop
2008-04-03 17:15 ` Richard Jones
2008-04-03 20:17 ` Erik de Castro Lopo
2008-04-03 20:39   ` Michał Maciejewski
2008-04-03 22:02     ` Erik de Castro Lopo
2008-04-03 22:17   ` Richard Jones
2008-04-04  1:47     ` Erik de Castro Lopo
2008-04-04 17:58       ` Adrien [this message]
2008-04-04 21:07         ` Richard Jones
2008-04-06 17:34           ` Adrien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=666572260804041058hdf6e6aclf52cc8a1ee812090@mail.gmail.com \
    --to=camaradetux@gmail.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).