[Theora-dev] Re: PC-based video server

Andrey Filippov theora at elphel.com
Wed Jan 26 22:24:50 PST 2005

> Theora already uses a simpler IDCT implementation when all
> the non-zero coefficients are in  the first 10 zig-zag positions,
> so this is relatively easy to adapt the software to).

Yes, that is one of the few things I already noticed and appreciated in
the code while looking for the places for printf-s to compare with the
encoder-side matching values.

> I had been interpreting your use of PTZ to mean decoding a small,
> rectangular region of the full frame at a possibly reduced resolution.
> If you mean simulating a _real_ PTZ camera, as in recovering depth from
> multiple views and actually re-projecting the geometry, this is another
> problem altogether.
Of course you understood me correctly. I want to be able to
decode/transcode to MJPEG selected rectangular regions with the resolution
from full to 1/8 (DC only) in discrete power of 2 steps. That was the
point of making FPGA implementation - it needs a lot of processing power
so it is unreasonable to expect regular PC can do the compete recoding
with scaling in between. I'm looking for the ways to "cheat" - get the
most functionality for the lowest resources (primarily CPU) usage.

> But mostly what I was talking about with transcoding is operating
> directly on the DCT coefficients, without ever going back to the spatial
> domain. Obviously, to me at least, this is no different whether your
> doing this over a small ROI or over the full frame, aside from the
> number of blocks you need to operate on. My familiarity with the
> internal workings of JPEG, however, is much smaller than those of Theora
> (since I haven't written a JPEG encoder/decoder, nor written its
> specification... or actually even read its specification), but in theory
> it seems like it'd be doable.
  I just never thought there is a way to use coefficients form say 4 
(2x2) blocks to build 1 block of twice lower resolution with small
number of arithmetic operation. Yes, it should be so - that's a good
idea - I just didn't understand it at once.

As for MJPEG - there are no special requirements that I know of (at least
cameras work fine) as needed for IDCT in Theora. It is possible to save
somewhat on header when using standard quantization tables
(ftp://ftp.rfc-editor.org/in-notes/rfc2435.txt) - so
dequantizing/quantizing might be needed - probably you have to do that
anyway for the calculations needed to change resolution.

More information about the Theora-dev mailing list