Justin Ruggles
bae83f2c74
alac: change some data types to plain int
13 years ago
Justin Ruggles
2aebac6918
alac: cosmetics: rename some variables and function names
13 years ago
Andrew D'Addesio
1b3ef155d7
alac: multi-channel decoding support
...
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
13 years ago
Justin Ruggles
81c9e2e6d0
alac: split element parsing into a separate function
...
This will make multi-channel implementation simpler.
Based partially on a patch by Andrew D'Addesio <modchipv12@gmail.com>.
13 years ago
Justin Ruggles
cd632619d9
alac: support a read sample size of up to 32
...
Use get_bits_long() in decode_scalar().
Use unsigned int for decoded value.
13 years ago
Justin Ruggles
73dc0db486
alac: output in planar sample format
...
Avoids unneeded interleaving and allows for reusing the AVFrame output buffer
as the internal buffer for 24-bit and 32-bit sample size.
13 years ago
Justin Ruggles
6482bd8831
alac: add 32-bit decoding support
13 years ago
Andrew D'Addesio
6cda74c155
alac: simplify channel interleaving
...
Signed-off-by: Justin Ruggles <justin.ruggles@gmail.com>
13 years ago
Justin Ruggles
5138ff143f
alac: use AVPacket fields directly in alac_decode_frame()
13 years ago
Justin Ruggles
7a206eb32f
alac: fix check for valid max_samples_per_frame
13 years ago
Justin Ruggles
1193d3fedd
alac: use get_sbits() to read LPC coefficients instead of casting
13 years ago
Justin Ruggles
7a50ec6799
alac: move the current samples per frame to the ALACContext
...
This will simplify the multi-channel implementation.
13 years ago
Justin Ruggles
46043962ea
alac: avoid using a double-negative when checking if the frame is compressed
13 years ago
Justin Ruggles
9a6c528e08
alac: factor out output_size check in predictor_decompress_fir_adapt()
13 years ago
Justin Ruggles
ebd4c3add1
alac: factor out loading of next decoded sample in LPC prediction
13 years ago
Justin Ruggles
a4ecd41442
alac: use index into buffer_out instead of incrementing the pointer
13 years ago
Justin Ruggles
f2515cd629
alac: simplify lpc coefficient adaptation
13 years ago
Justin Ruggles
abc4376b31
alac: reduce the number of local variables needed in lpc prediction
13 years ago
Justin Ruggles
01880d287b
alac: simplify 1st order prediction and reading of warm-up samples
13 years ago
Justin Ruggles
d0c0bf0d3e
alac: cosmetics: reindent after last commit
13 years ago
Justin Ruggles
79def4c523
alac: remove unneeded conditionals in predictor_decompress_fir_adapt()
13 years ago
Justin Ruggles
4bcd637dcb
alac: use sizeof() instead of hardcoded data sizes
13 years ago
Justin Ruggles
91620a04f1
alac: make block_size signed
...
It does not need to be unsigned.
13 years ago
Justin Ruggles
2fc24b3273
alac: remove a duplicate local variable
13 years ago
Justin Ruggles
5177413d20
alac: conditionally set sign_modifier to 1
...
It is already unconditionally set to 0 prior to this, so we can modify it
only when needed.
13 years ago
Justin Ruggles
7e6593e977
alac: eliminate 2 unneeded local variables in bastardized_rice_decompress()
...
x_modified is just unnecessary, and final_val can be removed by simplifying
the unsigned-to-signed conversion.
13 years ago
Justin Ruggles
6fd8a28b59
alac: adjust conditions for updating entropy decoder history
...
avoids some unnecessary arithmetic in certain situations
13 years ago
Justin Ruggles
a06fdadd97
alac: cosmetics: reindent after last commit
13 years ago
Justin Ruggles
d9837434a9
alac: limit the rice param before passing to decode_scalar()
...
reduces the number of parameters to decode_scalar() and slightly simplifies
the code
13 years ago
Justin Ruggles
6e91f62256
alac: reduce the number of parameters to bastardized_rice_decompress()
...
Use the ALACContext fields directly instead.
13 years ago
Justin Ruggles
836e8b9ba0
alac: cosmetics: rename some ALACContext parameters
13 years ago
Justin Ruggles
2ac1737583
alac: clean up and update comments leftover from reverse-engineering
13 years ago
Martin Storsjö
00c3b67b8a
cosmetics: Align codec declarations
...
Also break some long lines, remove codec function placeholder comments
and add spaces in sample/pixel format lists.
Signed-off-by: Martin Storsjö <martin@martin.st>
13 years ago
Ronald S. Bultje
c3bbd0b53b
alac: convert extradata reading to bytestream2.
13 years ago
Baptiste Coudurier
89fc7e36c7
alacdec: support 32 bps
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Justin Ruggles
e49d21306a
alacdec: implement the 2-pass prediction type.
...
The reference encoder does not generate any streams using this, but the
reference decoder can handle it, so we should as well.
13 years ago
Justin Ruggles
e76c7b856f
alacdec: fill in missing or guessed info about the extradata format.
...
Now that there is official documentation from Apple about this, we don't have
to guess anymore.
13 years ago
Michael Niedermayer
a8469223f6
alac: Check for bitstream overread
...
Fixes Ticket801
Bug found by: Oana Stratulat
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
13 years ago
Justin Ruggles
0eea212943
Add avcodec_decode_audio4().
...
Deprecate avcodec_decode_audio3().
Implement audio support in avcodec_default_get_buffer().
Implement the new audio decoder API in all audio decoders.
13 years ago
Justin Ruggles
30f3e7b524
alacdec: remove unneeded NULL or zero-size packet checks.
...
This is already done in avcodec_decode_audio3()
13 years ago
Justin Ruggles
68f7e9cd8e
alacdec: simplify buffer allocation by using FF_ALLOC_OR_GOTO()
13 years ago
Justin Ruggles
b316af7a7c
alacdec: ask for a sample for unsupported sample depths.
...
Also return AVERROR_PATCHWELCOME.
13 years ago
Justin Ruggles
63cf54df7a
alacdec: cosmetics: use 'ch' instead of 'chan' to iterate channels
13 years ago
Justin Ruggles
01200f1283
alacdec: move some declarations to the top of the function
13 years ago
Justin Ruggles
c3a92412c0
alacdec: always use get_sbits_long() for uncompressed samples
13 years ago
Justin Ruggles
b46e58f741
alacdec: remove unneeded local variable
13 years ago
Justin Ruggles
7080533cda
alacdec: remove the numchannels parameter from several functions.
...
They only operate on stereo content, so the extra param is not necessary and
also allows for simplifying the code.
13 years ago
Justin Ruggles
cb50329fc5
alacdec: rename 2 functions.
...
Now they only do stereo interleaving.
13 years ago
Justin Ruggles
c39bddd392
alacdec: move appending of extra_bits to a separate function.
...
This should also fix decoding of mono 24-bit.
13 years ago
Justin Ruggles
e739d35156
alacdec: split stereo decorrelation into a separate function.
...
It is identical for 16-bit and 24-bit, so there is no need to have duplicate
code.
13 years ago