Commit graph

1205 commits

Author SHA1 Message Date
Jean-Marc Valin
98acefdc4a Simplifications to the new allocator 2008-09-10 07:34:17 -04:00
Jean-Marc Valin
ebf72da760 At least attempting to use all the bits. 2008-09-09 23:21:36 -04:00
Jean-Marc Valin
825ead8210 Simplified allocation by doing it one band at a time, with memory 2008-09-09 07:35:40 -04:00
Jean-Marc Valin
d9b9565a4b Added Erik de Castro Lopo's float_cast.h to use lrintf() when available. Also
disables the synthesis on the encoder side when pitch is disabled.
2008-08-31 23:34:47 -04:00
Jean-Marc Valin
58b3727fcf exp() and log() are faster than pow() and log10() for dB conversion 2008-08-30 14:53:44 -04:00
Jean-Marc Valin
c994394fc3 Added signalling bits for enabling/disabling pitch, short blocks, and folding.
Also, making it possible to disable pitch for all frames.
2008-08-30 00:55:07 -04:00
Jean-Marc Valin
5c3bc67959 Fixed a bunch of fixed-point overflows on insanely hot signals by changing
the time-domain representation from Q14 to Q12 (Q29 to Q27 using the
standard convention).
2008-08-28 23:34:24 -04:00
Jean-Marc Valin
8dff923a5d Added hooks for tuning pulses and fine energy quant 2008-08-13 22:07:20 -04:00
Gregory Maxwell
5f2a74b38b Adding a floating point interface to encode and decode 2008-08-12 00:14:33 -04:00
Gregory Maxwell
8e30e75fcc Fixed fixed-point compilation error. 2008-08-10 07:35:20 -04:00
Jean-Marc Valin
5eef264f3e Solved an encoder/decoder mismatch happening when there's no pulse in the first
band
2008-08-06 23:06:31 -04:00
Jean-Marc Valin
4117ff0275 Preventing encoder/decoder mismatch when coarse energy budget is busted 2008-08-05 22:03:34 -04:00
Jean-Marc Valin
504f8c2597 some tuning to fine energy allocation and prevent it from going above 7 bits
(at which point, it causes problems)
2008-08-05 20:39:53 -04:00
Jean-Marc Valin
9c70906fdb Changing the allocation algorithm to better take into account the fixed cost
per frames for each mode.
2008-08-03 22:07:06 -04:00
Jean-Marc Valin
36e6e01ada Merged compute_allocation_table() and compute_energy_allocation_table() 2008-08-02 22:25:19 -04:00
Jean-Marc Valin
9eba823cf7 Turns out that the worse case of the vector split is the same as that of the
pulse split. Also, added an allocation line for even higher bit-rates
2008-08-02 20:51:44 -04:00
Jean-Marc Valin
eb7ce03165 fixed a bunch of bugs in the unified allocation code. 2008-08-02 20:14:17 -04:00
Jean-Marc Valin
46f3700e55 Fixed two issues pointed out by Greg 2008-08-02 08:16:58 -04:00
Jean-Marc Valin
6775de3eae Unified allocation of fine energy and pulses. 2008-08-02 08:14:42 -04:00
Jean-Marc Valin
c890b58b69 Completed the separation of coarse and fine energy quantisation 2008-08-01 22:26:49 -04:00
Jean-Marc Valin
7364e758ed Split coarse and fine energy quantisation 2008-08-01 00:11:25 -04:00
Jean-Marc Valin
400d76e5e2 bump bit-stream version 2008-07-26 09:15:26 -04:00
Jean-Marc Valin
5c0d486fe1 Better bit allocation for all frame sizes that are not equal to 256. 2008-07-24 08:49:34 -04:00
Jean-Marc Valin
1d27ef8b2c Re-implemented renormalise_bands() based on renormalise_vector(). 2008-07-20 23:30:29 -04:00
Jean-Marc Valin
6361ad8d41 Simplified the folding normalisation by creating renormalise_vector(). 2008-07-20 23:14:31 -04:00
Jean-Marc Valin
df38f2bf01 Re-enabling folding/intra for transients 2008-07-20 20:36:54 -04:00
Jean-Marc Valin
2c73306750 isolated the folding part of the code that's common in vq.c 2008-07-17 16:22:23 -04:00
Jean-Marc Valin
7028d62f85 Do not encode the short-window bit when not applicable. 2008-07-10 23:06:58 -04:00
Jean-Marc Valin
bd7de0a7d5 cleaned up transient_analysis() and replaced the algorithm with a simpler one
based on the max absolute value in a range.
2008-07-06 10:57:26 -04:00
Jean-Marc Valin
f457819668 fixed-point: conversion of pre-echo avoidance now complete. 2008-07-04 16:47:28 -04:00
Jean-Marc Valin
0ceccb2dbd fixed-point: more work on the time window (almost done) 2008-07-03 20:41:06 -04:00
Jean-Marc Valin
e4aeb47277 More fixed-point conversion of the time window. 2008-06-29 12:06:05 +10:00
Jean-Marc Valin
528f4b8660 More fixed-point work on the time window -- including conversion of the gain
to power-of-two.
2008-06-29 03:46:39 +10:00
Jean-Marc Valin
9375aa4faa Cleaned up the pre-echo avoidance code so it works when compiled as fixed-point
(still requires float ops though). Also, removed the per-band IDCT.
2008-06-27 07:57:35 +10:00
Jean-Marc Valin
16ca18b9b0 Automatically choosing the overlap based on the frame size. 2008-06-18 23:44:48 +10:00
Jean-Marc Valin
9d1decd1bb short-block MDCT 2008-06-17 13:28:13 +10:00
Jean-Marc Valin
12b22484e2 Implemented two pre-echo avoidance techniques: time-domain pre-emphasis and
per-band IDCT.
2008-06-16 14:13:05 +10:00
Jean-Marc Valin
b0c153b15d Doing the cwrs split in dimensions should save a few bits. 2008-06-11 18:05:57 +10:00
Jean-Marc Valin
f892d5f68e Turns out maxK and maxM were also inverted in fits_in64() 2008-06-10 23:46:12 +10:00
Jean-Marc Valin
51891c9d5c fixed a cwrs bug in fits_in32() 2008-06-10 20:57:52 +10:00
Jean-Marc Valin
679083f449 Implemented split-cwrs for very large codebooks (>64 bits), but still getting
a few decoding errors.
2008-06-10 17:23:03 +10:00
Jean-Marc Valin
5aff7c04d4 Implemented a cleaner way to detect whether CWRS codebooks fit in 32 or 64 bits 2008-06-10 16:25:45 +10:00
Jean-Marc Valin
7806230829 Suggesting .oga as extension for Ogg files 2008-06-09 15:40:34 +10:00
Peter Kirk
19f9dc98ee Use EXPORT macro in a way compatible with win32 2008-06-07 13:13:59 +10:00
Jean-Marc Valin
96748cf309 Allowing frames up to 512 samples 2008-06-06 17:04:07 +10:00
Jean-Marc Valin
c6ca49923e Infrastructure work for a psy model 2008-06-01 23:19:16 +10:00
Jean-Marc Valin
13294b54c0 Adjusted stereo bit allocation to be higher than mono for the same alloc line 2008-05-30 16:07:06 +10:00
Jean-Marc Valin
54e860dc04 Brought the mdct masking function up-to-date 2008-05-30 15:48:09 +10:00
Jean-Marc Valin
45e358f696 Making the Laplace test case pass again 2008-05-28 00:58:42 +10:00
Jean-Marc Valin
4c6ee567ee Preventing encoder-decoder mismatch when energy values are too large to be
represented by the laplace encoder (would have a probability of zero due
to finite precision)
2008-05-27 22:17:13 +10:00