These are some speedups for arithmetic decoding, They show a ~15-20%
performance increase when decoding Iframe only streams.

Further optimization is avaliable, please do comment on these if you
wish.  These patches are also avaliable in my public git tree:

  http://repo.or.cz/w/schroedinger/davidf-public.git
  on the arithdec-speedup branch

I will be pushing this series into the main git tree unless i hear any
major NAKs.

Example speedup on an AMD opteron/amd64:

13.34 9ea686f... [decoder] don't zero subbands if arith data under/overr
13.32 aad375c... [buffer] Fix length member of SchroBuffer to be unsigne
13.33 df80aee... [arithdec] Use unsigned values for lut indexing
13.20 4c6d79e... [arithdec] Reorder SchroArith struct to keep useful val
12.94 2cfa058... [arithdec] Alter LUT to have values interleaved.
12.53 d1bcd88... [arithdec] Change bit insertion counter to decrement to
12.51 fec2dbb... [arithdec] contexts should be unsigned, when used to in
12.46 709a757... [arithdec] Remove redundant n + 1<<count
12.46 b80782a... [arithdec] Fix use of SCHRO_ARITH_DEFINE_INLINE
12.33 e62a499... [arithdec] renormalise before extracting a data bit
11.79 d6273ca... [arithdec] insert 8 bits at once into 'code'
11.55 4b5e803... [arithdec] use {range,code_minus_low} rather than {rang
11.89 98b663c... [arithdec] use variables for range and code rather than
11.79 2ed8658... [arithdec] move 16 bits into code at once rather than 8
11.83 16ef834... [arithdec] move range up by 16 bits.
11.26 b5b1cc7... [arithdec] test for infinite loop during arithmetic dec

David Flynn (8):
  [buffer] Fix length member of SchroBuffer to be unsigned
  [arithdec] Use unsigned values for lut indexing
  [arithdec] Reorder SchroArith struct to keep useful values at start
    of struct
  [arithdec] Alter LUT to have values interleaved.
  [arithdec] Change bit insertion counter to decrement to 0
  [arithdec] contexts should be unsigned, when used to index tables
  [arithdec] Remove redundant n + 1<<count
  [arithdec] Fix use of SCHRO_ARITH_DEFINE_INLINE

Jonathan Rosser (8):
  [decoder] don't zero subbands if arith data under/overruns.
  [arithdec] renormalise before extracting a data bit
  [arithdec] insert 8 bits at once into 'code'
  [arithdec] use {range,code_minus_low} rather than {range,low,code}
  [arithdec] use variables for range and code rather than structure
    members
  [arithdec] move 16 bits into code at once rather than 8
  [arithdec] move range up by 16 bits.
  [arithdec] test for infinite loop during arithmetic decoding not
    required

 schroedinger/schroarith.c   |   79 +++++++++++++---------------
 schroedinger/schroarith.h   |  118 ++++++++++++++++++++++---------------------
 schroedinger/schrobuffer.h  |    2 +-
 schroedinger/schrodecoder.c |    4 ++
 4 files changed, 102 insertions(+), 101 deletions(-)



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Schrodinger-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/schrodinger-devel

Reply via email to