[theora-dev] Theora integration question
Timothy B. Terriberry
tterribe at xiph.org
Tue Oct 16 20:25:27 PDT 2012
> For example, I'm not quite sure what 'dct_tokens' is, but mallocing that in
> oc_dec_init() seems to be putting me over the edge. I notice that the size
> of those mallocs looks similar to what I'd expect the RGB pixel data to take
> for each movie.
The total size of dct_tokens is targeted towards the worst-case, with
the expectation that the OS will support overcommit semantics, so that a
much smaller number of pages actually get allocated. Since you know what
movies you're playing back, you could potentially instrument things and
use a much smaller buffer, but that might need to be updated as you add
more movies, and would also require more extensive code changes to make
sure you're using the right portions of the buffer (it is split into 64
pieces, one for each zig-zag index).
> // _dec->dct_tokens=(unsigned char *)_ogg_malloc((64+64+1)*
> unsigned char sambuf[MB(8)]; // global
> _dec->dct_tokens=(unsigned char *)&sambuf;
> 'seems' to work, but not knowing the internals of theora, makes me nervous
> that I have broken something.
This will work fine. dct_tokens is only used while decoding a single
frame. Its contents do not need to be remembered from frame to frame, so
as long as you are not decoding two frames simultaneously using the same
"sambuf" buffer, you should have no problem.
If it were me, I would check that MB(8) was at least as large as
More information about the theora-dev