(no subject)
Aug. 16th, 2004 08:13 amI've been mostly off LJ for the last week. You people post a lot. I'll probably be caught up by later today, at least with the much-reduced reading list I scan regularly.
I'm going to my post-surgery followup shortly, at about 9:30 this morning. I don't expect any problems, but rest assured, I'll tell people if there are any.
Anybody know a good online reference on MPEG decompression and/or format? I know JPEG pretty tolerably already, but we're talking about hardware MPEG acceleration stuff at work, and my current knowledge of decompression is, at best, rough. I'm thinking MPEG3 or maybe H.264 here... Full-on MPEG4 is simply too wide a variety of codecs to allow this discussion to usefully occur, much less for me to really understand in a day or two :)
I'm going to my post-surgery followup shortly, at about 9:30 this morning. I don't expect any problems, but rest assured, I'll tell people if there are any.
Anybody know a good online reference on MPEG decompression and/or format? I know JPEG pretty tolerably already, but we're talking about hardware MPEG acceleration stuff at work, and my current knowledge of decompression is, at best, rough. I'm thinking MPEG3 or maybe H.264 here... Full-on MPEG4 is simply too wide a variety of codecs to allow this discussion to usefully occur, much less for me to really understand in a day or two :)
no subject
Date: 2004-08-16 10:21 am (UTC)Even then, you may have to figure a lot of it out by reverse engineering reference implementations.
Licensing issues when writing your own mp3 decoder look annoying.
no subject
Date: 2004-08-16 10:35 am (UTC)no subject
Date: 2004-08-16 11:38 am (UTC)no subject
Date: 2004-08-16 11:38 am (UTC)If you know JPEG, then MPEG itself is a, shall we say, extension of it. You basically use the DCT, quantize high-frequency bits, then pack in as much of that stuff as you can based on how many bits you have available. However, MPEG also supports motion compensation, where if you know a certain block of pixels in one frame moves to another area in the next, you can encode this as a position change and save even more on the ever-scarce bits. I think this is pretty much it, at least up to MPEG-2, though there may be other frame-difference modes I forget. (MPEG-4 seems to define more than just a basic video stream, but I haven't had time to mess with it.)
In MPEG speak, video is encoded into I-, P-, and B-frames. I-frames are "intra-coded" and depend only on themselves for reconstruction, so they're basically JPEG pictures. P-frames are forward-predictive frames only; they depend on themselves and the previous frame (I-frame or not, I forget) for reconstruction. B-frames depend on both the frame before and frame after. Typically, you'll find groups of frames consisting of an I followed by a series of P and B. Be warned that the order in which the frames appear in the stream is not always the same as the order in which they are to be displayed.
The standards are nice enough to say "this is how the bitstream should look; this is what features we support in it; this is how the decoder should operate"; in essence, making encoder design open-ended. So designing an MPEG encoder is complicated stuff while designing an MPEG decoder basically amounts to taking their idealized decoder and figuring out how to make it efficient for your target.
Oh, and as far as I know there is no MPEG-3. There's MPEG-1 (coded pictures up to around 1.5 Mbps), MPEG-2 (
no subject
Date: 2004-08-16 11:39 am (UTC)MPEG-2 (generic coding, usually for higher bitrate applications like DVD), MPEG-4, MPEG-7, and MPEG-21. Why they chose this numbering scheme is a total mystery to me.