diff options
author | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-01-27 17:18:58 +0000 |
---|---|---|
committer | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2007-01-27 17:18:58 +0000 |
commit | c1a890715d4791b75b9512c1d9b02cb691c5de39 (patch) | |
tree | 5c641a197c75428192b8df06187895668aa6ee4c /recordmydesktop/src/update_image.c | |
parent | ee224df6f5e9871e9b7b516a53161198960cc4fb (diff) |
Changed cache format to utilize better interframe encoding
and thus require sufficiently less hard disk space.
Instead of the old (plane_width/16)*(plane_height/16) blocksize,
now we are using 16x16 for the y plane and 8x8 blocks for the u,v planes.
Also this byte alignment allows comparing of blocks to happen by
first casting into a larger datatype(u_int64_t if available, u_int32_t else).
This way we do as little as 1/8 or 1/4 of comparisons. This essentially offsets
the higher CPU required to check the now increased number of blocks, and even
provides a slight performance boost from the previous way of caching.
Also, the load cache loop has been debloated, by moving much of the functionality
that previously resided in an if evaluation statement, into anew function(ReadFrame).
For further abstraction, ReadFrame utilizes ReadZF to do the actual reading.
ReadZF determines if a gzread or an fread has to be done.
Another improvement in the program is that, now, write operations on the disk, happen
in 4 kbytes pages, minimizing thus the overall cost of access.
Last change in this set is that the indexes in the CachedFrame and FrameHeader datatypes,
are now u_int32_t's, to accomodate the possibly large number of blocks(could have been 16 bit
types but that would give 4096*4096 max resolution, which might have caused problems in the future)
git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@266 f606c939-3180-4ac9-a4b8-4b8779d57d0a
Diffstat (limited to 'recordmydesktop/src/update_image.c')
0 files changed, 0 insertions, 0 deletions