summaryrefslogtreecommitdiff
path: root/libavcodec/ac3enc.c
Commit message (Collapse)AuthorAge
* ac3enc: Fix linking of AC-3 encoder without the E-AC-3 encoder.Diego Biurrun2011-06-08
| | | | | The AC-3 encoder unconditionally references some symbols from the E-AC-3 encoder; make those references conditional to fix linking.
* Move E-AC-3 encoder functions to a separate eac3enc.c file.Justin Ruggles2011-06-07
|
* ac3enc: remove convenience macro, #define DEBUGJustin Ruggles2011-06-07
|
* ac3enc: remove unused #defineJustin Ruggles2011-06-07
|
* ac3enc: extract all exponents for the frame at onceJustin Ruggles2011-06-04
|
* ac3enc: fix LOCAL_ALIGNED usage in count_mantissa_bits()Mans Rullgard2011-05-28
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: modify mantissa bit counting to keep bap counts for all values of bapJustin Ruggles2011-05-28
| | | | | | instead of just 0 to 4. This does all the actual bit counting as a final step.
* ac3enc: split mantissa bit counting into a separate function.Justin Ruggles2011-05-28
| | | | No speed difference. This is to allow for more flexible bit counting.
* ac3enc: store per-block/channel bap pointers by reference block in a 2D arrayJustin Ruggles2011-05-28
| | | | | | | rather than in the AC3Block struct. This will make it easier to access the bap values without having to chase the reference block pointers each time.
* ac3enc: use LOCAL_ALIGNED macroMans Rullgard2011-05-28
| | | | | | | | | Aligned local variables must use the LOCAL_ALIGNED macro to ensure correct alignment on all systems. The unusual size argument to memset is required since the implementation of LOCAL_ALIGNED may use a pointer to an array. Signed-off-by: Mans Rullgard <mans@mansr.com>
* cosmetics: indentation and alignment after previous commitJustin Ruggles2011-05-27
|
* ac3enc: add support for E-AC-3 encoding.Justin Ruggles2011-05-27
| | | | | This adds basic stream format support and allows for arbitrary bit rates rather than just those supported in AC-3.
* ac3enc: Move AC-3 AVOptions array to a separate file to make it easier toJustin Ruggles2011-05-27
| | | | use only selected options for the different AC-3 encoder types.
* ac3enc: initialize all coefficients to zero.Justin Ruggles2011-05-25
| | | | | | | | Uninitialized coefficients were being used to generate exponents, some of which actually ended up in the final stream. Even though, they were just extra exponents that are not used by any decoder, it is still better to have consistent output for testing. This also fixes valgrind errors.
* ac3enc: add channel coupling supportJustin Ruggles2011-05-24
| | | | | | | | | Channel coupling is an optional AC-3 feature that increases quality by combining high frequency information from multiple channels into a single channel. The per-channel high frequency information is sent with less accuracy in both the frequency and time domains. This allows more bits to be used for lower frequencies while preserving enough information to reconstruct the high frequencies.
* ac3enc: put the counting of stereo rematrixing bits in the same place toJustin Ruggles2011-05-12
| | | | make the code easier to understand.
* ac3enc: clean up count_frame_bits() and count_frame_bits_fixed()Justin Ruggles2011-05-12
|
* AVOptions: make default_val a union, as proposed in AVOption2.Anton Khirnov2011-05-10
| | | | This breaks API and ABI.
* Replace strncpy() with av_strlcpy().Alex Converse2011-05-03
|
* ac3enc: do not store a bandwidth code for each channel.Justin Ruggles2011-05-01
| | | | | Although AC-3 allows it, it's not very useful. The encoder uses the same code for all full-bandwidth channels.
* ac3enc: remove bandwidth reduction as fallback for bit allocation failure.Justin Ruggles2011-05-01
| | | | | It was only needed at low bitrates, which now already use a low bandwidth, so the bandwidth reduction is no longer needed.
* ac3enc: merge compute_exp_strategy_ch() into compute_exp_strategy()Justin Ruggles2011-05-01
|
* ac3enc: return error if frame+exponent bits are too large instead of usingJustin Ruggles2011-05-01
| | | | | | av_assert2(). This can occur in some very rare cases with low bitrates.
* ac3enc: differentiate between current block and reference block in bit_alloc()Justin Ruggles2011-05-01
|
* ac3enc: simplify exponent_init() by calculating exponent_group_tab[] basedJustin Ruggles2011-05-01
| | | | on exponent group sizes.
* ac3enc: simplify stereo rematrixing decision optionsJustin Ruggles2011-05-01
|
* ac3enc: remove check for mismatching channels and channel_layoutJustin Ruggles2011-04-27
|
* Add AVX FFT implementation.Vitor Sessak2011-04-26
| | | | Signed-off-by: Reinhard Tartler <siretart@tauware.de>
* ac3enc: move extract_exponents inner loop to ac3dspMans Rullgard2011-04-04
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: select bandwidth based on bit rate, sample rate, and number ofJustin Ruggles2011-04-03
| | | | | | | full-bandwidth channels. This reduces high-frequency artifacts and improves the quality of the lower frequency audio at low bit rates.
* ac3enc: use generic fixed-point mdctMans Rullgard2011-04-03
| | | | | | | | This makes the AC3 encoder use the shared fixed-point MDCT rather than its own implementation. The checksum changes are due to different rounding in the MDCT. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: simplify sym_quant()Mans Rullgard2011-03-31
| | | | | | | These expressions are equivalent since levels is always odd, and overflow is impossible due to the constraints set by the assert(). Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: move compute_mantissa_size() to ac3dspMans Rullgard2011-03-30
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: move mant*_cnt and qmant*_ptr out of AC3EncodeContextMans Rullgard2011-03-30
| | | | | | | These fields are only used in quantize_mantissas() and reset on each call, no need to store them in the main context. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3: move ff_ac3_bit_alloc_calc_bap to ac3dspMans Rullgard2011-03-29
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: avoid memcpy() of exponents and baps in EXP_REUSE case by usingJustin Ruggles2011-03-28
| | | | exponent reference blocks.
* ac3enc: Add codec-specific options for writing AC-3 metadata.Justin Ruggles2011-03-27
|
* Get audio_service_type for AC-3 based on bitstream mode in the AC-3 parserJustin Ruggles2011-03-25
| | | | and decoder, and vice-versa for the AC-3 encoder.
* Add apply_window_int16() to DSPContext with x86-optimized versions and use itJustin Ruggles2011-03-22
| | | | in the ac3_fixed encoder.
* ac3enc: make sym_quant() branch-freeJustin Ruggles2011-03-22
|
* Replace FFmpeg with Libav in licence headersMans Rullgard2011-03-19
| | | | Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: add float_to_fixed24() with x86-optimized versions to AC3DSPContextJustin Ruggles2011-03-17
| | | | and use in scale_coefficients() for the floating-point AC-3 encoder.
* ac3enc: do not right-shift fixed-point coefficients in the final MDCT stage.Justin2011-03-14
| | | | | | | | | This increases the accuracy of coefficients, leading to improved quality. Rescaling of the coefficients to full 25-bit accuracy is done rather than offsetting the exponent values. This requires coefficient scaling to be done before determining the rematrixing strategy. Also, the rematrixing strategy calculation must use 64-bit math to prevent overflow due to the higher precision coefficients.
* ac3enc: add some assertionsJustin Ruggles2011-03-07
|
* ac3enc: use av_assert2() instead of assert() to make debugging easier.Justin Ruggles2011-03-07
|
* ac3enc: add num_rematrixing_bands to AC3EncodeContext and use it instead of ↵Justin Ruggles2011-03-04
| | | | | | | | the hardcoded value. Currently it is always 4, but this change will allow it to be adjusted when bandwidth-related features are added such as channel coupling, enhanced channel coupling, and spectral extension.
* ac3enc: fix bug in stereo rematrixing decision.Justin Ruggles2011-02-16
| | | | | | | The rematrixing strategy reuse flags are not reset between frames, so they need to be initialized for all blocks, not just block 0. Signed-off-by: Mans Rullgard <mans@mansr.com>
* ac3enc: change default floor code to 7.Justin Ruggles2011-02-15
| | | | | | | This is to match the value in every (E-)AC-3 file from commercial sources. It has a negligible effect on audio quality. Signed-off-by: Mans Rullgard <mans@mansr.com>
* Merge libavcore into libavutilReinhard Tartler2011-02-15
| | | | | | | | | | | | It is pretty hopeless that other considerable projects will adopt libavutil alone in other projects. Projects that need small footprint are better off with more specialized libraries such as gnulib or rather just copy the necessary parts that they need. With this in mind, nobody is helped by having libavutil and libavcore split. In order to ease maintenance inside and around FFmpeg and to reduce confusion where to put common code, avcore's functionality is merged (back) to avutil. Signed-off-by: Reinhard Tartler <siretart@tauware.de>
* Add x86-optimized versions of exponent_min().Justin Ruggles2011-02-10
| | | | Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>