6 years agoHigh-band attenuation tuning for hybrid mode
Koen Vos [Mon, 11 Mar 2013 17:30:47 +0000 (13:30 -0400)]
High-band attenuation tuning for hybrid mode

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
6 years agoFixes pseudo-stack
Jean-Marc Valin [Mon, 11 Mar 2013 17:41:11 +0000 (13:41 -0400)]
Fixes pseudo-stack

6 years agoFixes OPUS_SET_EXPERT_FRAME_DURATION_REQUEST for multi-stream
Taihei Momma [Mon, 11 Mar 2013 17:07:34 +0000 (13:07 -0400)]

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
6 years agoFixes C90 issues for obsolete compilers
Robert Meakins [Mon, 11 Mar 2013 16:59:15 +0000 (12:59 -0400)]
Fixes C90 issues for obsolete compilers

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
6 years agoAdds stereo width computation
Jean-Marc Valin [Mon, 11 Mar 2013 15:35:10 +0000 (11:35 -0400)]
Adds stereo width computation

Using this to change the encoder based on mono/stereo rather than looking
at the number of input channels.

6 years agoMerge branch 'exp_analysis'
Jean-Marc Valin [Fri, 8 Mar 2013 17:29:53 +0000 (12:29 -0500)]
Merge branch 'exp_analysis'


6 years agoMaking CELT stereo<->mono transitions gradual
Jean-Marc Valin [Fri, 8 Mar 2013 16:35:15 +0000 (11:35 -0500)]
Making CELT stereo<->mono transitions gradual

This not only avoids sudden changes in audio quality, but also increases
quality when we don't have enough bits to code a wide stereo image.

6 years agoDocumentation fixes
Jean-Marc Valin [Thu, 7 Mar 2013 23:13:19 +0000 (18:13 -0500)]
Documentation fixes

Improved version of:

6 years agotest_opus_decode: force integer constants unsigned
James Zern [Wed, 27 Feb 2013 21:16:03 +0000 (13:16 -0800)]
test_opus_decode: force integer constants unsigned

warning: this decimal constant is unsigned only in ISO C90

when building with e.g., gcc -m32 -std=gnu90

6 years agoOops, fixed API name from previous commit
Jean-Marc Valin [Fri, 1 Mar 2013 21:07:02 +0000 (16:07 -0500)]
Oops, fixed API name from previous commit

6 years agoApplies soft-clipping to the int decoder API.
Jean-Marc Valin [Fri, 1 Mar 2013 20:18:23 +0000 (15:18 -0500)]
Applies soft-clipping to the int decoder API.

opus_decode() and opus_multistream_decode() now apply soft clipping
before converting to 16-bit int. This should produce better a higher
quality result than hard clipping like we were doing before. The _float()
API isn't affected, but the clipping function is exported so users can
manually apply the soft clipping.

6 years agoMakes the speech/music probability estimation mode conservative exp_analysis
Jean-Marc Valin [Thu, 28 Feb 2013 20:30:51 +0000 (15:30 -0500)]
Makes the speech/music probability estimation mode conservative

This is done using an adaptive beta and an estimate of the speech
and music detection confidence

6 years agoAdds silence probability to speech/music detector
Jean-Marc Valin [Fri, 22 Feb 2013 21:44:56 +0000 (16:44 -0500)]
Adds silence probability to speech/music detector

Avoids biasing the decision when it's all silence/noise.

6 years agooops s/IMAX/IMIN/
Jean-Marc Valin [Thu, 21 Feb 2013 03:31:49 +0000 (22:31 -0500)]
oops s/IMAX/IMIN/

6 years agoAdds support for delayed decision
Jean-Marc Valin [Wed, 20 Feb 2013 09:08:04 +0000 (04:08 -0500)]
Adds support for delayed decision

Variable duration option renamed to OPUS_SET_EXPERT_FRAME_DURATION,
with new API.
Also moves up the analysis to avoid having to do int->float conversion
on large buffers.

6 years agoFixes a bug introduced in 851f803
Jean-Marc Valin [Tue, 19 Feb 2013 08:42:18 +0000 (03:42 -0500)]
Fixes a bug introduced in 851f803

6 years agoFixes two bandwidth decision issues
Jean-Marc Valin [Tue, 19 Feb 2013 05:42:15 +0000 (00:42 -0500)]
Fixes two bandwidth decision issues

1) In cases where the SILK desired bandwidth went down, then quickly up, we
count get stuck in a mode with the LP variation going the wrong way.
2) Bandwidth detection can no longer force SILK to go below wideband to
avoid switches that require redundancy.

6 years agoMoves mono downmixing and upsampling to the compute_mdcts()
Jean-Marc Valin [Mon, 18 Feb 2013 06:43:43 +0000 (01:43 -0500)]
Moves mono downmixing and upsampling to the compute_mdcts()

6 years agoAdds code to revise the transient decision using the band energy
Jean-Marc Valin [Mon, 18 Feb 2013 02:21:30 +0000 (21:21 -0500)]
Adds code to revise the transient decision using the band energy

Detects a transient when the average band energy jumps by more than 6 dB
between two consecutive frames. This fixes some undetected transients on
Gainless' Muse_Breaks_Rmx sample.

6 years agoMaking multistream variable duration work for both the float and int API
Jean-Marc Valin [Thu, 20 Dec 2012 05:23:01 +0000 (00:23 -0500)]
Making multistream variable duration work for both the float and int API

6 years agoNo need for extra_buffer anymore
Jean-Marc Valin [Mon, 17 Dec 2012 23:02:56 +0000 (18:02 -0500)]
No need for extra_buffer anymore

6 years agoBetter handling of the multistream bitrate
Jean-Marc Valin [Mon, 17 Dec 2012 22:54:01 +0000 (17:54 -0500)]
Better handling of the multistream bitrate


6 years agoMultistream support for variable frame duration
Jean-Marc Valin [Mon, 17 Dec 2012 21:23:42 +0000 (16:23 -0500)]
Multistream support for variable frame duration

Also fixes a bug with stereo streams where the initial memory was only
using the left channel.

6 years agoMakes variable framesize less aggressive at lower rates
Jean-Marc Valin [Tue, 27 Nov 2012 04:20:01 +0000 (23:20 -0500)]
Makes variable framesize less aggressive at lower rates

6 years agoRe-enable analysis for 40- and 60-ms frames
Jean-Marc Valin [Mon, 26 Nov 2012 08:08:15 +0000 (03:08 -0500)]
Re-enable analysis for 40- and 60-ms frames

6 years agoFirst attempt at varying the frame size depending on the audio (float only)
Jean-Marc Valin [Thu, 22 Nov 2012 18:11:43 +0000 (13:11 -0500)]
First attempt at varying the frame size depending on the audio (float only)

The search is based on minimizing the bitrate increase due to transients
by considering we can reduce the "transient boost" by reducing the frame
size, at the cost of increasing the normal overhead.

6 years agoMakes opus_demo rubust to the encoder using variable frame duration
Jean-Marc Valin [Tue, 20 Nov 2012 04:21:43 +0000 (23:21 -0500)]
Makes opus_demo rubust to the encoder using variable frame duration

Also, the encode+decode mode now produces an output of the same size
as the original.

6 years agoRunning transient_analysis() even for 2.5 ms frames
Jean-Marc Valin [Tue, 20 Nov 2012 04:17:06 +0000 (23:17 -0500)]
Running transient_analysis() even for 2.5 ms frames

This means 2.5 ms frames can now use a higher bitrate for transients.

6 years agoMakes analysis usable for all frame sizes
Jean-Marc Valin [Wed, 14 Nov 2012 07:39:27 +0000 (02:39 -0500)]
Makes analysis usable for all frame sizes

6 years agoMoves analysis to the beginning of opus_encode()
Jean-Marc Valin [Tue, 13 Nov 2012 07:24:07 +0000 (02:24 -0500)]
Moves analysis to the beginning of opus_encode()

6 years agoFixes a SILK fixed-point encoder issue reported by Cliff Parris <cliff@espico.com>
Jean-Marc Valin [Thu, 7 Feb 2013 20:31:30 +0000 (15:31 -0500)]
Fixes a SILK fixed-point encoder issue reported by Cliff Parris <cliff@espico.com>

6 years agoFixes a minor CELT->SILK switching glitch in the decoder
Jean-Marc Valin [Thu, 7 Feb 2013 04:48:09 +0000 (23:48 -0500)]
Fixes a minor CELT->SILK switching glitch in the decoder

By not reinitializing the stereo state during a switch, the old stereo
memory would create a false impulse (i.e. single sample) in the decoded audio.
This change affects the normative part of the decoder. Fortunately,
the modified decoder is still compliant with the specification because
it still easily passes the testvectors. For example, for the float decoder
at 48 kHz, the opus_compare (arbitrary) "quality score" changes from
from 99.9333% to 99.925%.

6 years agoAdds a ramp up in the SILK prefill
Jean-Marc Valin [Wed, 6 Feb 2013 23:10:51 +0000 (18:10 -0500)]
Adds a ramp up in the SILK prefill

This improves quality of CELT->SILK switches by not having the SILK encoder
attempt to encode a discontinuity. Overall, it's a small PQ improvement,
confirmed by some listening.

6 years agoFixes a hybrid stereo encoder issue
Jean-Marc Valin [Tue, 5 Feb 2013 06:32:52 +0000 (01:32 -0500)]
Fixes a hybrid stereo encoder issue

This was causing periodic glitches in the right channel in hybrid mode.

6 years agoSplit mapping families into sections and add dowmix matrices.
Ralph Giles [Thu, 17 Jan 2013 00:30:55 +0000 (16:30 -0800)]
Split mapping families into sections and add dowmix matrices.

The channel mapping family nested lists were hard to read.
Promoting each family description to a subsection makes it
more clear where one is in the document.

Also add suggested downmix matricies. These are what we're
currently using in opus-tools, opusfile, and Firefox.
Ascii-art matrices in 69 columns is hard.

6 years agoImprove Content Type figure placement.
Ralph Giles [Wed, 16 Jan 2013 22:14:32 +0000 (14:14 -0800)]
Improve Content Type figure placement.

With xml2rfc 2.3.9, I was getting the 'audio/ogg; codecs=opus'
figure hoisted out of the the containing paragraph, which was
very confusing.

I've tried to improve this by moving the surrounding paragraph
into the figure using the <preamble> and <postamble> tags, as
in the example in draft-mrose-writting-rfcs.

Unfortunately this still isn't perfect. Since the surrounding
paragraph is part of the figure we can't set align="center" on
the figure itself, and the processor seems to ignore it on the
artwork element. I've compensated by adding some leading

6 years agoMinor clarifications to the channel mapping section.
Ralph Giles [Sat, 12 Jan 2013 01:11:07 +0000 (17:11 -0800)]
Minor clarifications to the channel mapping section.

Mostly just being more verbose.

6 years agoUse 'front center' in the channel mapping table.
Ralph Giles [Sat, 12 Jan 2013 01:01:38 +0000 (17:01 -0800)]
Use 'front center' in the channel mapping table.

This clarifies the meaning in surround configurations and better
distinguishes it from 'rear center'.

6 years agoFix a typo.
Ralph Giles [Fri, 11 Jan 2013 23:51:15 +0000 (15:51 -0800)]
Fix a typo.

6 years agoAdd HTTPS to make gmaxwell happy.
Timothy B. Terriberry [Fri, 11 Jan 2013 03:29:17 +0000 (19:29 -0800)]
Add HTTPS to make gmaxwell happy.

6 years agoFlesh out the Implementation Status section a bit.
Timothy B. Terriberry [Fri, 11 Jan 2013 03:23:58 +0000 (19:23 -0800)]
Flesh out the Implementation Status section a bit.

Add sections on VLC, foobar200, and Rockbox.
Be more complete about listing which features of the format are
 actually supported by each implementation.
Still need to do more testing for Chrome, FFmpeg, and libav.

6 years agoClarify how grouped streams are not "Ogg Opus files".
Ralph Giles [Fri, 11 Jan 2013 01:00:18 +0000 (17:00 -0800)]
Clarify how grouped streams are not "Ogg Opus files".

We mean to make .opus only for degenerate--not concurrently
multiplexed or grouped--but optionally sequentially multiplexed
or chained physical Ogg streams.

However, we don't mean to say you can't use this draft with
such streams.

Also, replace the reference to RFC3534 with RFC5334, which
obsoletes the previous reference by defining video/ogg and

6 years agoAdd an 'Implementation Status' section to the Ogg Opus draft.
Ralph Giles [Fri, 11 Jan 2013 00:38:31 +0000 (16:38 -0800)]
Add an 'Implementation Status' section to the Ogg Opus draft.

This is based on the experiment described in

I've listed several major implementations. Their formatting
could probably be better. More obviously, this really demonstrates
the need for a good test suite to evaluate converage and compliance
with all these different implementations.

6 years agoTrim an irrelevant clause.
Ralph Giles [Thu, 10 Jan 2013 22:15:41 +0000 (14:15 -0800)]
Trim an irrelevant clause.

This is true, but not important to understanding the limitation.

6 years agoRTP draft adopted as WG item
Jean-Marc Valin [Thu, 10 Jan 2013 14:44:38 +0000 (09:44 -0500)]
RTP draft adopted as WG item

6 years agoFixes stupid preprocessor-related bug introduced in e368e6209.
Jean-Marc Valin [Wed, 9 Jan 2013 16:13:00 +0000 (11:13 -0500)]
Fixes stupid preprocessor-related bug introduced in e368e6209.

Would cause the preemphasis and deemphasis to fail, but only with
custom modes enabled.

6 years agoFixes a seed issue introduced in 5367dac
Jean-Marc Valin [Fri, 4 Jan 2013 02:15:16 +0000 (21:15 -0500)]
Fixes a seed issue introduced in 5367dac

Was causing the testvector to pass with lower quality, though
practically there was no quality degradation.

6 years agoRemove condition in pre/de-emphasis when not building with custom modes
Jean-Marc Valin [Thu, 3 Jan 2013 19:28:28 +0000 (14:28 -0500)]
Remove condition in pre/de-emphasis when not building with custom modes

Should slightly improve coverage and reduce code size

6 years agoUse AC_CONFIG_HEADERS.
Ralph Giles [Wed, 2 Jan 2013 23:28:26 +0000 (15:28 -0800)]

This avoids a warning about obsolete AM_CONFIG_HEADERS() on more
recent autoconf. The new macro has been around at least since
autoconf 2.60. So this should be safe.

6 years agoseed and remaining_bits moved to band context
Jean-Marc Valin [Sun, 23 Dec 2012 02:56:22 +0000 (21:56 -0500)]
seed and remaining_bits moved to band context

6 years agoUsing a band context to reduce the number of arguments being passed around.
Jean-Marc Valin [Sun, 23 Dec 2012 02:32:28 +0000 (21:32 -0500)]
Using a band context to reduce the number of arguments being passed around.

6 years agomore bands.c cleaning up
Jean-Marc Valin [Wed, 19 Dec 2012 17:39:29 +0000 (12:39 -0500)]
more bands.c cleaning up

6 years agocollapse mask cleanup
Jean-Marc Valin [Wed, 19 Dec 2012 16:37:21 +0000 (11:37 -0500)]
collapse mask cleanup

6 years agoRemoves useless parameters and re-indents the code
Jean-Marc Valin [Wed, 19 Dec 2012 16:25:52 +0000 (11:25 -0500)]
Removes useless parameters and re-indents the code

6 years agoSplitting off the recursion in quant_partition()
Jean-Marc Valin [Wed, 19 Dec 2012 16:04:16 +0000 (11:04 -0500)]
Splitting off the recursion in quant_partition()

quant_band() now only handles the level0 case.

6 years agostereo part of quant_band() moved to quant_band_stereo()
Jean-Marc Valin [Wed, 19 Dec 2012 15:26:16 +0000 (10:26 -0500)]
stereo part of quant_band() moved to quant_band_stereo()

6 years agoMoves the split angle code to compute_theta()
Jean-Marc Valin [Wed, 19 Dec 2012 14:58:27 +0000 (09:58 -0500)]
Moves the split angle code to compute_theta()

6 years agoFirst step in quant_band() cleanup: N=1 case.
Jean-Marc Valin [Wed, 19 Dec 2012 12:19:54 +0000 (07:19 -0500)]
First step in quant_band() cleanup: N=1 case.

6 years agoFixes MSVC warnings for double->float and float->int conversion v1.1-alpha
Jean-Marc Valin [Fri, 21 Dec 2012 21:17:38 +0000 (16:17 -0500)]
Fixes MSVC warnings for double->float and float->int conversion

6 years agoAdd float literal suffixes to mlp_data.c.
Ralph Giles [Fri, 21 Dec 2012 20:06:24 +0000 (12:06 -0800)]
Add float literal suffixes to mlp_data.c.

Fixes an MSVC double truncation warning.

6 years agoAdd float suffix to tansig_table literals.
Ralph Giles [Fri, 21 Dec 2012 19:56:18 +0000 (11:56 -0800)]
Add float suffix to tansig_table literals.

This fixes a truncation warning in MSVC:

warning C4305: 'initializing' : truncation from 'double' to
'const opus_val16'.

opus_val16 is a float in the floating point build and an
int16 in the fixed-point build. The table isn't used in
the fixed-point build, but the compiler would presumedly
warn in that case as well.

6 years agoAdd tansig_table.h to the MSVC project files.
Ralph Giles [Fri, 21 Dec 2012 19:49:46 +0000 (11:49 -0800)]
Add tansig_table.h to the MSVC project files.

6 years agomissing comment in win32/config.h
Jean-Marc Valin [Fri, 21 Dec 2012 19:11:10 +0000 (14:11 -0500)]
missing comment in win32/config.h

6 years agoOnly use automatic bandwidth detection when the user doesn't force bandwidth
Jean-Marc Valin [Fri, 21 Dec 2012 18:09:43 +0000 (13:09 -0500)]
Only use automatic bandwidth detection when the user doesn't force bandwidth

Also fixes an issue with 40- and 60-ms frames using the repacketizer.

6 years agoFixes bandwidth detection by not relying on uninitialized data
Jean-Marc Valin [Fri, 21 Dec 2012 17:28:25 +0000 (12:28 -0500)]
Fixes bandwidth detection by not relying on uninitialized data

6 years agoskip bands with no energy
Jean-Marc Valin [Fri, 21 Dec 2012 06:23:26 +0000 (01:23 -0500)]
skip bands with no energy

6 years agoCapping lsb_depth to 16 unless using the float API of a float build
Jean-Marc Valin [Fri, 21 Dec 2012 04:11:53 +0000 (23:11 -0500)]
Capping lsb_depth to 16 unless using the float API of a float build

6 years agoNew bandwidth detection code
Jean-Marc Valin [Fri, 21 Dec 2012 03:48:35 +0000 (22:48 -0500)]
New bandwidth detection code

Can now work up to full-band and uses lsb_depth to fix the noise issue.

6 years agoBump version number
Jean-Marc Valin [Thu, 20 Dec 2012 18:00:52 +0000 (13:00 -0500)]
Bump version number

6 years agoUpdate ogg draft based on comments from Tina le Grand.
Ralph Giles [Wed, 19 Dec 2012 20:21:06 +0000 (12:21 -0800)]
Update ogg draft based on comments from Tina le Grand.


6 years agoUpdate the oggopus script to use xml2rfc v2.
Ralph Giles [Wed, 19 Dec 2012 00:37:04 +0000 (16:37 -0800)]
Update the oggopus script to use xml2rfc v2.

The command line has changed, for the better, but we need to
update the way we call it. Also adds an install hint if it's
not found on the path.

NB I tried to detect and fallback to the old syntax for the
version 1 (TCL) implementation but this is hard because it
doesn't support any switches (like --version) and it no
longer parses our remote entities.

6 years agoMinor tuining of complexity thresholds
Jean-Marc Valin [Fri, 14 Dec 2012 19:01:06 +0000 (14:01 -0500)]
Minor tuining of complexity thresholds

6 years agoVBR code simplification
Jean-Marc Valin [Fri, 14 Dec 2012 18:21:09 +0000 (13:21 -0500)]
VBR code simplification

6 years agoCleanup: tf_estimate now ranges from 0 to 1
Jean-Marc Valin [Fri, 14 Dec 2012 02:40:58 +0000 (21:40 -0500)]
Cleanup: tf_estimate now ranges from 0 to 1

6 years agoDynalloc rate calibration
Jean-Marc Valin [Wed, 12 Dec 2012 20:22:39 +0000 (15:22 -0500)]
Dynalloc rate calibration

6 years agoMakes "stereo savings" less aggressive on mono or near-mono.
Jean-Marc Valin [Wed, 12 Dec 2012 20:16:27 +0000 (15:16 -0500)]
Makes "stereo savings" less aggressive on mono or near-mono.

The max reduction now depends on intensity threshold too.

6 years agoMakes tonality boost less aggressive
Jean-Marc Valin [Wed, 12 Dec 2012 19:45:16 +0000 (14:45 -0500)]
Makes tonality boost less aggressive

Some tests like Kamedo's HA test suggested that our tonal boost was a bit
too extreme.

6 years agoDisables the new spread+tapset estimator
Jean-Marc Valin [Wed, 12 Dec 2012 19:41:29 +0000 (14:41 -0500)]
Disables the new spread+tapset estimator

6 years agoDocument that opus_packet_get_nb_frames, etc. can return OPUS_BAD_ARG.
Ralph Giles [Tue, 11 Dec 2012 18:17:11 +0000 (10:17 -0800)]
Document that opus_packet_get_nb_frames, etc. can return OPUS_BAD_ARG.

NB they only check for len < 1, not for null data.

6 years agoNumerous PLC cleanups.
Timothy B. Terriberry [Fri, 7 Dec 2012 22:07:22 +0000 (14:07 -0800)]
Numerous PLC cleanups.

This should reduce computation, reduce stack usage, and be
 substantially easier to read, but should not change behavior.
It's not quite bit-exact because I collapsed the application of the
 decay and the fading into a single pass to save one multiply per
 sample, but the difference signal is silent.

It also changes the comments into complete sentences.

6 years agoRemove the obsolete CELT_BUILD define from win32/config.h.
Ralph Giles [Fri, 7 Dec 2012 17:16:34 +0000 (09:16 -0800)]
Remove the obsolete CELT_BUILD define from win32/config.h.

6 years agoAdd tests for GET_LAST_PACKET_DURATION.
Gregory Maxwell [Thu, 6 Dec 2012 02:43:29 +0000 (21:43 -0500)]

Also remove a useless extern that crept into the tests from some
optimization driven testcase generation.

Jean-Marc Valin [Thu, 6 Dec 2012 02:48:45 +0000 (21:48 -0500)]

Calling PLC/FEC with a different size was not updating it

6 years agoAdd missing packet_get_nb_samples test coverage and fix test output.
Gregory Maxwell [Thu, 6 Dec 2012 00:26:44 +0000 (19:26 -0500)]
Add missing packet_get_nb_samples test coverage and fix test output.

6 years agoBump soname version to match the 1.0.x branch.
Ralph Giles [Wed, 5 Dec 2012 23:57:45 +0000 (15:57 -0800)]
Bump soname version to match the 1.0.x branch.

Library soname versioning is something we normally change
only right before each release. However, with 1.0.2 being
released from the 1.0.x branch with 3.0.3, it makes sense
to make the same update here. That way when we do a new
release from master we can just increment again and have
the version properly reflect ranges relative to the stable

6 years agoLink to the new Microsoft patent license.
Ralph Giles [Wed, 5 Dec 2012 19:57:59 +0000 (11:57 -0800)]
Link to the new Microsoft patent license.

This applies in addition to the earlier grant made by
Skype, which was purchased by Microsoft.

6 years agoAdds assert to catch bug from previous commit
Jean-Marc Valin [Wed, 5 Dec 2012 05:54:21 +0000 (00:54 -0500)]
Adds assert to catch bug from previous commit

6 years agoFixes a multi-frame FEC issue that was caught by valgrind
Jean-Marc Valin [Wed, 5 Dec 2012 05:53:05 +0000 (00:53 -0500)]
Fixes a multi-frame FEC issue that was caught by valgrind

6 years agoAdds explicit valgrind checks when ENABLE_VALGRIND is defined
Jean-Marc Valin [Wed, 5 Dec 2012 05:50:53 +0000 (00:50 -0500)]
Adds explicit valgrind checks when ENABLE_VALGRIND is defined

6 years agoImplements opus_packet_get_nb_samples()
Jean-Marc Valin [Tue, 4 Dec 2012 20:45:31 +0000 (15:45 -0500)]
Implements opus_packet_get_nb_samples()

6 years agoImplements OPUS_GET_LAST_FRAME_DURATION decoder ctl()
Jean-Marc Valin [Tue, 4 Dec 2012 19:13:46 +0000 (14:13 -0500)]
Implements OPUS_GET_LAST_FRAME_DURATION decoder ctl()

6 years agoDon't update the internal decoder state until we know the packet is valid
Jean-Marc Valin [Tue, 4 Dec 2012 19:13:00 +0000 (14:13 -0500)]
Don't update the internal decoder state until we know the packet is valid

6 years agoChanges the PLC behaviour and fixes the FEC behaviour on concatenated packets
Jean-Marc Valin [Tue, 4 Dec 2012 20:07:45 +0000 (15:07 -0500)]
Changes the PLC behaviour and fixes the FEC behaviour on concatenated packets

PLC and FEC now return exactly the number of samples specified for the
buffer rather than (usually) returning the size of the last packet.
Doc and tests are updated accordingly.

6 years agoRemove MSVC incremental linking directives.
Ralph Giles [Mon, 3 Dec 2012 21:46:29 +0000 (13:46 -0800)]
Remove MSVC incremental linking directives.

This avoids linker errors with VS2010 of the form
    failure during conversion to COFF: invalid file or corrupt

The problem does not occur if the project files are updated
to build under VS2012.

6 years agoDo imdct post-rotate and deshuffle in-place.
Nils Wallménius [Sun, 2 Dec 2012 15:06:27 +0000 (16:06 +0100)]
Do imdct post-rotate and deshuffle in-place.

Gets rid of one stack buffer.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
6 years agoFixes forward MDCT for overlaps that aren't a multiple of 4
Jean-Marc Valin [Mon, 3 Dec 2012 20:40:01 +0000 (15:40 -0500)]
Fixes forward MDCT for overlaps that aren't a multiple of 4

Adds more sizes to test_unit_mdct.c

6 years agoFix packet length handling for 16-bit machines (makes no difference on 32-bit)
Jean-Marc Valin [Mon, 3 Dec 2012 18:05:24 +0000 (13:05 -0500)]
Fix packet length handling for 16-bit machines (makes no difference on 32-bit)

6 years agoUpdates MDCT unit test
Jean-Marc Valin [Sun, 2 Dec 2012 03:11:47 +0000 (22:11 -0500)]
Updates MDCT unit test

6 years agoMore comments in the PLC
Jean-Marc Valin [Sun, 2 Dec 2012 03:00:53 +0000 (22:00 -0500)]
More comments in the PLC

6 years agoPlace output of imdct post-rotate and deshuffle in out buffer to avoid copying and...
Nils Wallménius [Sat, 1 Dec 2012 20:28:59 +0000 (21:28 +0100)]
Place output of imdct post-rotate and deshuffle in out buffer to avoid copying and simplify the code.

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>