June 5, 2005
more on codecs, and maybe some mention of cats
So after spending quite a lot of time getting LAME/mpglib tuned for my
app, it turns out mpglib doesnt handle having multiple decodes going
at once (despite having a context pointer etc). LAME. REALLY. So after
looking around for any good solid (<=LGPL) mp3 decoders, and not finding
any, I started trying to use Vorbis again. My main problem was with creating
a Vorbis encoder taking too long. Well, when I went to get a burrito tonight,
I realized that I shouldn't be encoding samples as they come in, but rather
just when I get a chance. So with a mild architectural change (that took about
30 minutes), I got it all working nicely. Vorbis is really ideally suited for
this app (which you will be seeing shortly), on many levels, and above all
the fact that it's free goes a long long way.
Now I've been talking shit about APIs some, lately, and I just want to
state that while I don't think I'm an expert on making great APIs (god
knows Winamp's API is a handfull), I do know a good API when I see one. :)
I managed to do a good one for Jesusonic, that allows me to integrate
Jesusonic processing with other apps extremely easily (including the new
app)-- in making the DirectX plug-in the only challenge was making the
DirectX plug-in. Not integrating Jesusonic into it.
I'm very tempted to go make a version of LAME that has a very clean and
sane encoding and decoding API, as well as tuning the mpglib that comes with
it to support multiple decodes, much better frame synchronization (Winamp's
got as solid as it did from just a few good tweaks).. it's very tempting,
cause I often find myself wanting to support these things. Then again, maybe
I should wait until the MP3 patents run out, since I live in the USA...
Yay for Vorbis...
The other thing to note, is that the feral cat who adopted us rocks. Last night
we were watching a movie, and we heard this noise. I went to look into her
little doghouse, and it looked like she was shredding the crap out of her bed.
I was thinking "wow she must be restless or something", and I went out to
survey (and perhaps clean up) the damage (scaring the cat off in the process),
only to find that she was just pulling her shedded hair from the bed, cleaning
it. IT made us feel bad that we didn't clean it sooner, but all was well once
we cleaned the hair off, and ran it through the washer and dryer, to give the
kitty back her clean bed. It just really impressed me, that's all.
And one final thing, with all of the rumour going around about Apple possibly
announcing switching to Intel architecture chips tomorrow, I'd just like to
point out the following:
Whether or not it makes business sense for them to switch, the actual process
of switching won't be that bad. Porting applications from OSX/PPC to OSX/x86
wouldn't be that big of a deal. Getting everybody to use the updated APIs,
and gcc for compiling, was the huge step. Apple may even have planned it, for
all we know. API changes are a much bigger headache than instruction set/
endian changes. At least from my experience in porting software. Then again,
99.99% of the code I write is endian-nuetral on the first take, so maybe I'm
smoking crack (but I doubt it). I'd really like to hear that Apple announced
that they were going to use Athlon64s. AMD has really blown me away. And I'm
going to order my A64X2 4400+ soon (HELLO, BIOS UPGRADE).