| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
The AC-3 encoder unconditionally references some symbols from the E-AC-3
encoder; make those references conditional to fix linking.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
|
|
|
|
| |
instead of just 0 to 4.
This does all the actual bit counting as a final step.
|
|
|
|
| |
No speed difference. This is to allow for more flexible bit counting.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
| |
This adds basic stream format support and allows for arbitrary bit rates
rather than just those supported in AC-3.
|
|
|
|
| |
use only selected options for the different AC-3 encoder types.
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
make the code easier to understand.
|
| |
|
|
|
|
| |
This breaks API and ABI.
|
| |
|
|
|
|
|
| |
Although AC-3 allows it, it's not very useful. The encoder uses the same code
for all full-bandwidth channels.
|
|
|
|
|
| |
It was only needed at low bitrates, which now already use a low bandwidth, so
the bandwidth reduction is no longer needed.
|
| |
|
|
|
|
|
|
| |
av_assert2().
This can occur in some very rare cases with low bitrates.
|
| |
|
|
|
|
| |
on exponent group sizes.
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Reinhard Tartler <siretart@tauware.de>
|
|
|
|
| |
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
|
|
|
|
|
| |
full-bandwidth channels.
This reduces high-frequency artifacts and improves the quality of the lower
frequency audio at low bit rates.
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
|
|
| |
exponent reference blocks.
|
| |
|
|
|
|
| |
and decoder, and vice-versa for the AC-3 encoder.
|
|
|
|
| |
in the ac3_fixed encoder.
|
| |
|
|
|
|
| |
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
|
|
| |
and use in scale_coefficients() for the floating-point AC-3 encoder.
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
|