summaryrefslogtreecommitdiff
path: root/src/opus_encoder.c
Commit message (Collapse)AuthorAgeFilesLines
* MLP_TRAINING instead of manual commentsJean-Marc Valin2016-11-231-1/+3
|
* Remove global downsampling stateJean-Marc Valin2016-11-231-3/+2
|
* Update downmix_float() for 24 kHz analysis (untested)Jean-Marc Valin2016-11-231-7/+14
|
* Makes the 24kHz analysis downsampling works for fixed-pointJean-Marc Valin2016-11-231-15/+18
|
* Stop ignoring bandwidth analysisJean-Marc Valin2016-11-231-1/+1
|
* Fixing bandwidth detection for 24 kHz analysisJean-Marc Valin2016-11-231-8/+17
|
* fixJean-Marc Valin2016-11-231-0/+1
|
* disable some analysisJean-Marc Valin2016-11-231-1/+1
|
* first hack seems to be workingJean-Marc Valin2016-11-231-8/+12
|
* wipJean-Marc Valin2016-11-231-0/+43
|
* Remove redundant codeMark Harris2016-11-051-6/+1
| | | | | | frame_size_select() ensures that frame_size is a valid size or -1, !st->variable_duration is always false, and delay_compensation is no longer needed to choose the frame size.
* Fix crash on bad encoder frame_size argumentMark Harris2016-11-051-2/+10
|
* Removes OPUS_FRAMESIZE_VARIABLEJean-Marc Valin2016-11-041-292/+6
| | | | That experiment never actually worked
* Reduce redundancy when SILK uses too many bitsMark Harris2016-11-021-24/+12
| | | | | | | | Fix Hybrid redundancy assertion failure in ec_enc_shrink(), even if SILK produces more than maxBits, by reducing or eliminating redundancy when necessary. Don't reserve space for redundancy that is too small to be used for redundancy. When there is not enough space for redundancy, allow the regular frame to use all the bits.
* Fix redundancy on SILK 80+ms bandwidth switchMark Harris2016-11-021-20/+17
| | | | | | With packets of 80 ms or more, a SILK bandwidth switch was missing the second half of the redundancy, because st->silk_bw_switch was cleared too early before any recursive calls.
* Fix CBR packet sizes for 80 msFelicia Lim2016-10-281-5/+4
| | | | | | Also clean up comments from the last patches Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Update bandwidth and opusCanSwitch before generating SILK DTX ToCFelicia Lim2016-10-271-7/+10
| | | | Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Encode correct headers when asking for very small output bytes and using ↵Felicia Lim2016-10-271-3/+47
| | | | | | long frames Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Support encoding 80/100/120 ms frame lengthsFelicia Lim2016-10-271-49/+80
| | | | Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Move multiframe encoding into a separate functionFelicia Lim2016-10-271-61/+101
| | | | Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Account for redundancy signalling when computing st->silk_mode.maxBitsJean-Marc Valin2016-10-271-4/+11
| | | | | | Without that, we could bust the budget and end up with the if (ec_tell(&enc) <= 8*nb_compr_bytes) being false, followed by an assert failure later.
* Using OPUS_MOVE() instead of OPUS_COPY() to move redundancy bytesJean-Marc Valin2016-09-201-1/+1
| | | | memcpy() aliasing bug caught by Felicia's encoder fuzzing test
* Fixing failure due to CBR allocating zero byte to a streamJean-Marc Valin2016-09-141-1/+4
|
* Fixes an internal error in the Opus encoderJean-Marc Valin2016-09-071-0/+7
| | | | | The encoder would reserve bytes for redundancy and then decide to use CELT, but not use those bytes.
* Make it possible to ignore inverted phase stereo for downmix purposesexp_bitstream7Jean-Marc Valin2016-09-011-0/+20
|
* Correct analysis downmix scaling factorMark Harris2016-08-271-4/+4
| | | | Divide by the actual number of channels mixed
* Properly process both channels for DTXJean-Marc Valin2016-08-251-13/+17
| | | | Adding a "channels" argument to compute_frame_energy() and is_digital_silence()
* Make the DC rejection filter Q14 instead of Q15Jean-Marc Valin2016-08-211-2/+2
| | | | This avoids an overflow on extreme signals
* Oops, fixes the sign in dc_reject()Jean-Marc Valin2016-08-151-3/+3
| | | | Thanks to Mark Harris for pointing it out.
* Implementing compute_frame_energy() from celt_inner_prod() for floatJean-Marc Valin2016-08-151-10/+15
|
* Reducing the overhead due to dependency chains in dc_reject() for stereoJean-Marc Valin2016-08-151-10/+43
| | | | Gives another ~2% speedup
* Reducing the dependency chain in dc_reject()Jean-Marc Valin2016-08-151-2/+2
| | | | Speeds up the encoder by about 1%
* Silence fixed point unused parameter warningMark Harris2016-07-211-0/+1
|
* Fix use_dtx for DISABLE_FLOAT_APIFelicia Lim2016-07-201-3/+7
| | | | Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
* Tune SILK rate for hybrid with FEC enabledJean-Marc Valin2016-07-191-11/+14
|
* Moving FEC decision to the Opus encoder level (from SILK level)Jean-Marc Valin2016-07-191-0/+43
|
* Taking loss rate into account in compute_equiv_rate()Jean-Marc Valin2016-07-191-5/+8
|
* Oops, edited the wrong comment in the previous commitJean-Marc Valin2016-07-191-2/+2
|
* Re-tuning compute_equiv_rate()Jean-Marc Valin2016-07-191-4/+4
|
* Getting rid of the SILK penalty for hybrid CBR.Jean-Marc Valin2016-07-191-2/+2
| | | | That was likely a mistake from a misunderstanding on the SILK bit allocation
* Improving CBR for hybrid modeJean-Marc Valin2016-07-191-6/+13
| | | | | | | Hybrid CBR now simply forces the SILK CBR rate to the "target" value. Also, we're getting rid of the -2 kb/s offset for CBR, which appeared to be harmful. In the case of hybrid constrained VBR, the cap is computed in the same way as the target.
* Making the encoder more aggressive at using wider bandwidthsJean-Marc Valin2016-07-191-17/+17
|
* We should now be able to be less conservative when using CBRJean-Marc Valin2016-07-171-7/+5
|
* Fixing bandwidth selection hysteresisJean-Marc Valin2016-07-171-2/+4
| | | | | | Previously, the bandwidth detection could (e.g.) change the bandwidth from fullband to superwideband, and the hysteresis would then cause bandwidth to be stuck in superwideband.
* Turn on DTX only when the noise is sufficiently quietFelicia Lim2016-07-171-3/+52
| | | | | | | | Computes a pseudo SNR as the ratio between the running peak signal energy to instantaneous noise energy. DTX is turned on only if this is higher than a pre-determined threshold. Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* New DTX that works in all modes (SILK/CELT/HYBRID)Felicia Lim2016-07-171-3/+54
| | | | | | | | | | | A frame is marked as valid for DTX if it contains noise or only digital silence. As before, there is an overhang period of 200 ms and a maximum consecutive DTX period of 400 ms. If the new DTX cannot be used because of the complexity setting and sampling frequency chosen, the SILK DTX will be used instead. Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Skip analysis if the frame contains only digital silenceFelicia Lim2016-07-171-7/+38
| | | | Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
* Quality: Increase CELT rate for voiced frames in hybrid modeJean-Marc Valin2016-07-171-0/+8
|
* Better modeling of the effect of CBR and complexityJean-Marc Valin2016-07-171-13/+42
| | | | | Should be able to make better mode/bandwidth decisions when CBR/complexity are involved.
* Re-enabling high-band attenuation for hybrid modeJean-Marc Valin2016-07-171-5/+1
| | | | The new attenuation is much smaller than previously.