const spx_word16_t *iptr = & in[last_sample];
#ifndef OVERRIDE_INNER_PRODUCT_SINGLE
- float accum[4] = {0,0,0,0};
+ sum = 0;
+ for(j=0;j<N;j++) sum += MULT16_16(sinc[j], iptr[j]);
+/* This code is slower on most DSPs which have only 2 accumulators.
+ Plus this this forces truncation to 32 bits and you lose the HW guard bits.
+ I think we can trust the compiler and let it vectorize and/or unroll itself.
+ spx_word32_t accum[4] = {0,0,0,0};
for(j=0;j<N;j+=4) {
- accum[0] += sinc[j]*iptr[j];
- accum[1] += sinc[j+1]*iptr[j+1];
- accum[2] += sinc[j+2]*iptr[j+2];
- accum[3] += sinc[j+3]*iptr[j+3];
+ accum[0] += MULT16_16(sinc[j], iptr[j]);
+ accum[1] += MULT16_16(sinc[j+1], iptr[j+1]);
+ accum[2] += MULT16_16(sinc[j+2], iptr[j+2]);
+ accum[3] += MULT16_16(sinc[j+3], iptr[j+3]);
}
sum = accum[0] + accum[1] + accum[2] + accum[3];
+*/
#else
sum = inner_product_single(sinc, iptr, N);
#endif
- out[out_stride * out_sample++] = PSHR32(sum, 15);
+ out[out_stride * out_sample++] = SATURATE32(PSHR32(sum, 15), 32767);
last_sample += int_advance;
samp_frac_num += frac_advance;
if (samp_frac_num >= den_rate)
}
cubic_coef(frac, interp);
- sum = MULT16_32_Q15(interp[0],accum[0]) + MULT16_32_Q15(interp[1],accum[1]) + MULT16_32_Q15(interp[2],accum[2]) + MULT16_32_Q15(interp[3],accum[3]);
+ sum = MULT16_32_Q15(interp[0],SHR32(accum[0], 1)) + MULT16_32_Q15(interp[1],SHR32(accum[1], 1)) + MULT16_32_Q15(interp[2],SHR32(accum[2], 1)) + MULT16_32_Q15(interp[3],SHR32(accum[3], 1));
#else
cubic_coef(frac, interp);
sum = interpolate_product_single(iptr, st->sinc_table + st->oversample + 4 - offset - 2, N, st->oversample, interp);
#endif
- out[out_stride * out_sample++] = PSHR32(sum,15);
+ out[out_stride * out_sample++] = SATURATE32(PSHR32(sum, 14), 32767);
last_sample += int_advance;
samp_frac_num += frac_advance;
if (samp_frac_num >= den_rate)
+#sbs-git:slp/unmodified/speex speex 1.2rc1 9bb0e6afe6171ab1c8764f46a809cfa83be7c0d4
+#
+# Do not Edit! Generated by:
+# spectacle version 0.14
+#
+
Name: speex
Summary: A voice compression format (codec)
Version: 1.2rc1
-Release: 2.23
+Release: 5
Group: System/Libraries
-License: BSD
+License: BSD-2.0
URL: http://www.speex.org/
-Source0: http://downloads.xiph.org/releases/speex/%{name}-1.2rc1.tar.gz
+Source0: %{name}-%{version}.tar.gz
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
BuildRequires: pkgconfig(ogg)
%description
-Speex is an audio codec especially designed for compressing voice at low
- bit-rates for applications such as voice over IP (VoIP). In some senses,
- it is meant to be complementary to the Vorbis codec which places a greater
- emphasis on high-quality music reproduction.
- This package contains the encoder and decoder command-line applications.
+Speex is a patent-free compression format designed especially for
+speech. It is specialized for voice communications at low bit-rates in
+the 2-45 kbps range. Possible applications include Voice over IP
+(VoIP), Internet audio streaming, audio books, and archiving of speech
+data (e.g. voice mail).
+
%package tools
%install
rm -rf %{buildroot}
+mkdir -p %{buildroot}/usr/share/license
+cp COPYING %{buildroot}/usr/share/license/%{name}
%make_install
rm -f $RPM_BUILD_ROOT%{_docdir}/speex/manual.pdf
%files
+%manifest speex.manifest
%defattr(-,root,root,-)
%doc COPYING
%{_libdir}/libspeex*.so.*
-
+/usr/share/license/%{name}
%files tools
+%manifest tools.manifest
%defattr(-,root,root,-)
%{_bindir}/speexenc
%{_bindir}/speexdec