Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(43)

Side by Side Diff: third_party/opus/src/doc/opus_update.patch

Issue 2962373002: [Opus] Update to v1.2.1 (Closed)
Patch Set: Include minor updates including fix for win_clang Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 diff --git a/celt/bands.c b/celt/bands.c
2 index 6962587..32e1de6 100644
3 --- a/celt/bands.c
4 +++ b/celt/bands.c
5 @@ -1234,9 +1234,23 @@ void quant_all_bands(int encode, const CELTMode *m, int s tart, int end,
6 b = 0;
7 }
8
9 - if (resynth && M*eBands[i]-N >= M*eBands[start] && (update_lowband || low band_offset==0))
10 + if (resynth && (M*eBands[i]-N >= M*eBands[start] || i==start+1) && (updat e_lowband || lowband_offset==0))
11 lowband_offset = i;
12
13 + if (i == start+1)
14 + {
15 + int n1, n2;
16 + int offset;
17 + n1 = M*(eBands[start+1]-eBands[start]);
18 + n2 = M*(eBands[start+2]-eBands[start+1]);
19 + offset = M*eBands[start];
20 + /* Duplicate enough of the first band folding data to be able to fold the second band.
21 + Copies no data for CELT-only mode. */
22 + OPUS_COPY(&norm[offset+n1], &norm[offset+2*n1 - n2], n2-n1);
23 + if (C==2)
24 + OPUS_COPY(&norm2[offset+n1], &norm2[offset+2*n1 - n2], n2-n1);
25 + }
26 +
27 tf_change = tf_res[i];
28 if (i>=m->effEBands)
29 {
30 @@ -1257,7 +1271,7 @@ void quant_all_bands(int encode, const CELTMode *m, int st art, int end,
31 fold_start = lowband_offset;
32 while(M*eBands[--fold_start] > effective_lowband);
33 fold_end = lowband_offset-1;
34 - while(M*eBands[++fold_end] < effective_lowband+N);
35 + while(++fold_end < i && M*eBands[fold_end] < effective_lowband+N);
36 x_cm = y_cm = 0;
37 fold_i = fold_start; do {
38 x_cm |= collapse_masks[fold_i*C+0];
39 diff --git a/celt/quant_bands.c b/celt/quant_bands.c
40 index e5ed9ef..82fb823 100644
41 --- a/celt/quant_bands.c
42 +++ b/celt/quant_bands.c
43 @@ -552,6 +552,7 @@ void log2Amp(const CELTMode *m, int start, int end,
44 {
45 opus_val16 lg = ADD16(oldEBands[i+c*m->nbEBands],
46 SHL16((opus_val16)eMeans[i],6));
47 + lg = MIN32(QCONST32(32.f, 16), lg);
48 eBands[i+c*m->nbEBands] = PSHR32(celt_exp2(lg),4);
49 }
50 for (;i<m->nbEBands;i++)
51 diff --git a/silk/LPC_inv_pred_gain.c b/silk/LPC_inv_pred_gain.c
52 index 60c439b..6c301da 100644
53 --- a/silk/LPC_inv_pred_gain.c
54 +++ b/silk/LPC_inv_pred_gain.c
55 @@ -84,8 +84,13 @@ static opus_int32 LPC_inverse_pred_gain_QA( / * O Returns inver
56
57 /* Update AR coefficient */
58 for( n = 0; n < k; n++ ) {
59 - tmp_QA = Aold_QA[ n ] - MUL32_FRAC_Q( Aold_QA[ k - n - 1 ], rc_Q31, 31 );
60 - Anew_QA[ n ] = MUL32_FRAC_Q( tmp_QA, rc_mult2 , mult2Q );
61 + opus_int64 tmp64;
62 + tmp_QA = silk_SUB_SAT32( Aold_QA[ n ], MUL32_FRAC_Q( Aold_QA[ k - n - 1 ], rc_Q31, 31 ) );
63 + tmp64 = silk_RSHIFT_ROUND64( silk_SMULL( tmp_QA, rc_mult2 ), mult2Q );
64 + if( tmp64 > silk_int32_MAX || tmp64 < silk_int32_MIN ) {
65 + return 0;
66 + }
67 + Anew_QA[ n ] = ( opus_int32 )tmp64;
68 }
69 }
70
71 diff --git a/silk/NLSF_stabilize.c b/silk/NLSF_stabilize.c
72 index 979aaba..2ef2398 100644
73 --- a/silk/NLSF_stabilize.c
74 +++ b/silk/NLSF_stabilize.c
75 @@ -134,7 +134,7 @@ void silk_NLSF_stabilize(
76
77 /* Keep delta_min distance between the NLSFs */
78 for( i = 1; i < L; i++ )
79 - NLSF_Q15[i] = silk_max_int( NLSF_Q15[i], NLSF_Q15[i-1] + NDeltaMin_ Q15[i] );
80 + NLSF_Q15[i] = silk_max_int( NLSF_Q15[i], silk_ADD_SAT16( NLSF_Q15[i -1], NDeltaMin_Q15[i] ) );
81
82 /* Last NLSF should be no higher than 1 - NDeltaMin[L] */
83 NLSF_Q15[L-1] = silk_min_int( NLSF_Q15[L-1], (1<<15) - NDeltaMin_Q15[L] );
84 diff --git a/silk/dec_API.c b/silk/dec_API.c
85 index efd7918..21bb7e0 100644
86 --- a/silk/dec_API.c
87 +++ b/silk/dec_API.c
88 @@ -72,6 +72,9 @@ opus_int silk_InitDecoder( /* O Returns error co
89 for( n = 0; n < DECODER_NUM_CHANNELS; n++ ) {
90 ret = silk_init_decoder( &channel_state[ n ] );
91 }
92 + silk_memset(&((silk_decoder *)decState)->sStereo, 0, sizeof(((silk_decoder *)decState)->sStereo));
93 + /* Not strictly needed, but it's cleaner that way */
94 + ((silk_decoder *)decState)->prev_decode_only_middle = 0;
95
96 return ret;
97 }
98 diff --git a/silk/resampler_private_IIR_FIR.c b/silk/resampler_private_IIR_FIR.c
99 index dbd6d9a..91a43aa 100644
100 --- a/silk/resampler_private_IIR_FIR.c
101 +++ b/silk/resampler_private_IIR_FIR.c
102 @@ -75,10 +75,10 @@ void silk_resampler_private_IIR_FIR(
103 silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS;
104 opus_int32 nSamplesIn;
105 opus_int32 max_index_Q16, index_increment_Q16;
106 - opus_int16 buf[ RESAMPLER_MAX_BATCH_SIZE_IN + RESAMPLER_ORDER_FIR_12 ];
107 + opus_int16 buf[ 2*RESAMPLER_MAX_BATCH_SIZE_IN + RESAMPLER_ORDER_FIR_12 ];
108
109 /* Copy buffered samples to start of buffer */
110 - silk_memcpy( buf, S->sFIR, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int32 ) );
111 + silk_memcpy( buf, S->sFIR, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) );
112
113 /* Iterate over blocks of frameSizeIn input samples */
114 index_increment_Q16 = S->invRatio_Q16;
115 @@ -95,13 +95,13 @@ void silk_resampler_private_IIR_FIR(
116
117 if( inLen > 0 ) {
118 /* More iterations to do; copy last part of filtered signal to begi nning of buffer */
119 - silk_memcpy( buf, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int32 ) );
120 + silk_memmove( buf, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) );
121 } else {
122 break;
123 }
124 }
125
126 /* Copy last part of filtered signal to the state for the next call */
127 - silk_memcpy( S->sFIR, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * siz eof( opus_int32 ) );
128 + silk_memcpy( S->sFIR, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * siz eof( opus_int16 ) );
129 }
130
131 diff --git a/src/opus_decoder.c b/src/opus_decoder.c
132 index 0cc56f8..8a30fbc 100644
133 --- a/src/opus_decoder.c
134 +++ b/src/opus_decoder.c
135 @@ -595,16 +595,14 @@ static int opus_packet_parse_impl(const unsigned char *dat a, int len,
136 /* Padding flag is bit 6 */
137 if (ch&0x40)
138 {
139 - int padding=0;
140 int p;
141 do {
142 if (len<=0)
143 return OPUS_INVALID_PACKET;
144 p = *data++;
145 len--;
146 - padding += p==255 ? 254: p;
147 + len -= p==255 ? 254: p;
148 } while (p==255);
149 - len -= padding;
150 }
151 if (len<0)
152 return OPUS_INVALID_PACKET;
153 diff --git a/run_vectors.sh b/run_vectors.sh
154 index 7cd23ed..4841b0a 100755
155 --- a/run_vectors.sh
156 +++ b/run_vectors.sh
157 @@ -1,3 +1,5 @@
158 +#!/bin/sh
159 +#
160 # Copyright (c) 2011-2012 IETF Trust, Jean-Marc Valin. All rights reserved.
161 #
162 # This file is extracted from RFC6716. Please see that RFC for additional
163 @@ -31,10 +33,8 @@
164 # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
165 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
166
167 -#!/bin/sh
168 -
169 -rm logs_mono.txt
170 -rm logs_stereo.txt
171 +rm -f logs_mono.txt logs_mono2.txt
172 +rm -f logs_stereo.txt logs_stereo2.txt
173
174 if [ "$#" -ne "3" ]; then
175 echo "usage: run_vectors.sh <exec path> <vector path> <rate>"
176 @@ -45,18 +45,23 @@ CMD_PATH=$1
177 VECTOR_PATH=$2
178 RATE=$3
179
180 -OPUS_DEMO=$CMD_PATH/opus_demo
181 -OPUS_COMPARE=$CMD_PATH/opus_compare
182 +: ${OPUS_DEMO:=$CMD_PATH/opus_demo}
183 +: ${OPUS_COMPARE:=$CMD_PATH/opus_compare}
184
185 if [ -d $VECTOR_PATH ]; then
186 echo Test vectors found in $VECTOR_PATH
187 else
188 echo No test vectors found
189 - #Don't make the test fail here because the test vectors will be
190 - #distributed separately
191 + #Don't make the test fail here because the test vectors
192 + #will be distributed separately
193 exit 0
194 fi
195
196 +if [ ! -x $OPUS_COMPARE ]; then
197 + echo ERROR: Compare program not found: $OPUS_COMPARE
198 + exit 1
199 +fi
200 +
201 if [ -x $OPUS_DEMO ]; then
202 echo Decoding with $OPUS_DEMO
203 else
204 @@ -82,9 +87,11 @@ do
205 echo ERROR: decoding failed
206 exit 1
207 fi
208 - $OPUS_COMPARE -r $RATE $VECTOR_PATH/testvector$file.dec tmp.out >> logs_mon o.txt 2>&1
209 + $OPUS_COMPARE -r $RATE $VECTOR_PATH/testvector${file}.dec tmp.out >> logs_m ono.txt 2>&1
210 float_ret=$?
211 - if [ "$float_ret" -eq "0" ]; then
212 + $OPUS_COMPARE -r $RATE $VECTOR_PATH/testvector${file}m.dec tmp.out >> logs_ mono2.txt 2>&1
213 + float_ret2=$?
214 + if [ "$float_ret" -eq "0" ] || [ "$float_ret2" -eq "0" ]; then
215 echo output matches reference
216 else
217 echo ERROR: output does not match reference
218 @@ -111,9 +118,11 @@ do
219 echo ERROR: decoding failed
220 exit 1
221 fi
222 - $OPUS_COMPARE -s -r $RATE $VECTOR_PATH/testvector$file.dec tmp.out >> logs_ stereo.txt 2>&1
223 + $OPUS_COMPARE -s -r $RATE $VECTOR_PATH/testvector${file}.dec tmp.out >> log s_stereo.txt 2>&1
224 float_ret=$?
225 - if [ "$float_ret" -eq "0" ]; then
226 + $OPUS_COMPARE -s -r $RATE $VECTOR_PATH/testvector${file}m.dec tmp.out >> lo gs_stereo2.txt 2>&1
227 + float_ret2=$?
228 + if [ "$float_ret" -eq "0" ] || [ "$float_ret2" -eq "0" ]; then
229 echo output matches reference
230 else
231 echo ERROR: output does not match reference
232 @@ -125,5 +134,10 @@ done
233
234
235 echo All tests have passed successfully
236 -grep quality logs_mono.txt | awk '{sum+=$4}END{print "Average mono quality is", sum/NR, "%"}'
237 -grep quality logs_stereo.txt | awk '{sum+=$4}END{print "Average stereo quality is", sum/NR, "%"}'
238 +mono1=`grep quality logs_mono.txt | awk '{sum+=$4}END{if (NR == 12) sum /= 12; else sum = 0; print sum}'`
239 +mono2=`grep quality logs_mono2.txt | awk '{sum+=$4}END{if (NR == 12) sum /= 12; else sum = 0; print sum}'`
240 +echo $mono1 $mono2 | awk '{if ($2 > $1) $1 = $2; print "Average mono quality is ", $1, "%"}'
241 +
242 +stereo1=`grep quality logs_stereo.txt | awk '{sum+=$4}END{if (NR == 12) sum /= 12; else sum = 0; print sum}'`
243 +stereo2=`grep quality logs_stereo2.txt | awk '{sum+=$4}END{if (NR == 12) sum /= 12; else sum = 0; print sum}'`
244 +echo $stereo1 $stereo2 | awk '{if ($2 > $1) $1 = $2; print "Average stereo qual ity is", $1, "%"}'
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698