diff options
author | Felicia Lim <flim@google.com> | 2016-07-25 20:28:37 +0200 |
---|---|---|
committer | Felicia Lim <flim@google.com> | 2016-08-01 11:41:57 +0200 |
commit | d03c373974c945b4b62b59b873522387418a2a3f (patch) | |
tree | 5e5c32e7d2a943a87532a9f426bc1cad137851cd /src/opus.c | |
parent | da5155b2f54bc136754590d0871008d9622c8100 (diff) | |
download | libopus-d03c373974c945b4b62b59b873522387418a2a3f.tar.gz |
Upgrade Opus to v1.1.3
Diffstat (limited to 'src/opus.c')
-rw-r--r-- | src/opus.c | 8 |
1 files changed, 7 insertions, 1 deletions
@@ -104,6 +104,10 @@ OPUS_EXPORT void opus_pcm_soft_clip(float *_x, int N, int C, float *declip_mem) /* Compute a such that maxval + a*maxval^2 = 1 */ a=(maxval-1)/(maxval*maxval); + /* Slightly boost "a" by 2^-22. This is just enough to ensure -ffast-math + does not cause output values larger than +/-1, but small enough not + to matter even for 24-bit output. */ + a += a*2.4e-7; if (x[i*C]>0) a = -a; /* Apply soft clipping */ @@ -201,8 +205,10 @@ int opus_packet_parse_impl(const unsigned char *data, opus_int32 len, opus_int32 pad = 0; const unsigned char *data0 = data; - if (size==NULL) + if (size==NULL || len<0) return OPUS_BAD_ARG; + if (len==0) + return OPUS_INVALID_PACKET; framesize = opus_packet_get_samples_per_frame(data, 48000); |