88 if((t << 1) > size) mask = ~mask;
94 0, 640, 1184, 1748, 2298, 2426, 2554, 3066, 3578, 4106, 4618, 5196, 5708
102 static int vlc_initialized = 0;
110 static VLC_TYPE dscf0_table[560][2];
111 static VLC_TYPE dscf1_table[598][2];
114 static VLC_TYPE codes_table[5708][2];
147 if(vlc_initialized)
return 0;
150 band_vlc.
table = band_table;
156 q1_vlc.
table = q1_table;
161 q9up_vlc.
table = q9up_table;
167 scfi_vlc[0].
table = scfi0_table;
172 scfi_vlc[1].
table = scfi1_table;
178 dscf_vlc[0].
table = dscf0_table;
183 dscf_vlc[1].
table = dscf1_table;
189 q3_vlc[0].
table = q3_0_table;
195 q3_vlc[1].
table = q3_1_table;
202 for(i = 0; i < 2; i++){
209 q2_vlc[
i].
table = &codes_table[vlc_offsets[2+
i]];
215 quant_vlc[0][
i].
table = &codes_table[vlc_offsets[4+
i]];
220 quant_vlc[1][
i].
table = &codes_table[vlc_offsets[6+
i]];
225 quant_vlc[2][
i].
table = &codes_table[vlc_offsets[8+
i]];
230 quant_vlc[3][
i].
table = &codes_table[vlc_offsets[10+
i]];
242 int *got_frame_ptr,
AVPacket *avpkt)
246 int buf_size = avpkt->
size;
249 int i, j,
k, ch, cnt, res,
t;
252 int maxband, keyframe;
263 memset(c->
Q, 0,
sizeof(c->
Q));
273 if(maxband > 32) maxband -= 33;
284 last[0] = last[1] = 0;
285 for(i = maxband - 1; i >= 0; i--){
286 for(ch = 0; ch < 2; ch++){
288 if(last[ch] > 15) last[ch] -= 17;
289 bands[
i].
res[ch] = last[ch];
296 for(i = 0; i < maxband; i++)
297 if(bands[i].res[0] || bands[i].res[1])
301 for(i = maxband - 1; i >= 0; i--)
302 if(bands[i].res[0] || bands[i].res[1]){
303 bands[
i].
msf = mask & 1;
308 for(i = maxband; i < c->
maxbands; i++)
309 bands[i].res[0] = bands[i].res[1] = 0;
312 for(i = 0; i < 32; i++)
316 for(i = 0; i < maxband; i++){
317 if(bands[i].res[0] || bands[i].res[1]){
318 cnt = !!bands[
i].
res[0] + !!bands[
i].
res[1] - 1;
321 if(bands[i].res[0]) bands[
i].
scfi[0] = t >> (2 * cnt);
322 if(bands[i].res[1]) bands[
i].
scfi[1] = t & 3;
327 for(i = 0; i < maxband; i++){
328 for(ch = 0; ch < 2; ch++){
329 if(!bands[i].res[ch])
continue;
340 for(j = 0; j < 2; j++){
341 if((bands[i].scfi[ch] << j) & 2)
342 bands[i].scf_idx[ch][j + 1] = bands[i].scf_idx[ch][j];
347 bands[
i].
scf_idx[ch][j + 1] = ((bands[
i].
scf_idx[ch][j] + t - 25) & 0x7F) - 6;
354 for(ch = 0; ch < 2; ch++){
355 res = bands[
i].
res[ch];
367 for(k = 0; k < SAMPLES_PER_BAND / 2; k++, t <<= 1)
368 c->
Q[ch][off + j + k] = (t & 0x20000) ? (
get_bits1(gb) << 1) - 1 : 0;
385 c->
Q[ch][off + j + 1] = t >> 4;
386 c->
Q[ch][off + j + 0] = (t & 8) ? (t & 0xF) - 16 : (t & 0xF);
396 c->
Q[ch][off + j] =
t;
397 cnt = (cnt >> 1) +
FFABS(c->
Q[ch][off + j]);
404 c->
Q[ch][off + j] <<= res - 9;
405 c->
Q[ch][off + j] |=
get_bits(gb, res - 9);
407 c->
Q[ch][off + j] -= (1 << (res - 2)) - 1;
static const int quant_offsets[6]
void ff_mpc_dequantize_and_synth(MPCContext *c, int maxband, int16_t **out, int channels)
av_cold void ff_dsputil_init(DSPContext *c, AVCodecContext *avctx)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
This structure describes decoded (raw) audio or video data.
static const int8_t mpc8_q5_bits[2][MPC8_Q5_SIZE]
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static const int8_t mpc8_bands_bits[MPC8_BANDS_SIZE]
static av_cold int init(AVCodecContext *avctx)
#define AV_CH_LAYOUT_STEREO
static const uint8_t mpc8_q8_codes[2][MPC8_Q8_SIZE]
static const int8_t mpc8_q7_bits[2][MPC8_Q7_SIZE]
static const int8_t mpc8_q8_bits[2][MPC8_Q8_SIZE]
static const uint32_t mpc8_cnk_lost[16][33]
void void avpriv_request_sample(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature.
static const int8_t mpc8_dscf1_bits[MPC8_DSCF1_SIZE]
int ff_init_vlc_sparse(VLC *vlc, int nb_bits, int nb_codes, const void *bits, int bits_wrap, int bits_size, const void *codes, int codes_wrap, int codes_size, const void *symbols, int symbols_wrap, int symbols_size, int flags)
enum AVSampleFormat sample_fmt
audio sample format
static const int8_t mpc8_q4_syms[MPC8_Q4_SIZE]
uint8_t * extradata
some codecs need / can use extradata like Huffman tables.
static const uint8_t mpc8_dscf1_codes[MPC8_DSCF1_SIZE]
#define CODEC_CAP_DR1
Codec uses get_buffer() for allocating buffers and supports custom allocators.
static int get_bits_count(const GetBitContext *s)
static const uint8_t mpc8_q1_codes[MPC8_Q1_SIZE]
bitstream reader API header.
static const int8_t mpc8_dscf0_bits[MPC8_DSCF0_SIZE]
static const int8_t mpc8_scfi1_bits[MPC8_SCFI1_SIZE]
static const int8_t mpc8_huffq2[5 *5 *5]
static int get_bits_left(GetBitContext *gb)
static const int8_t mpc8_q1_bits[MPC8_Q1_SIZE]
static const uint8_t mpc8_dscf0_codes[MPC8_DSCF0_SIZE]
static const int8_t mpc8_idx50[125]
static const uint16_t mask[17]
static av_cold int mpc8_decode_init(AVCodecContext *avctx)
static const struct endianess table[]
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static VLC quant_vlc[4][2]
static const int8_t mpc8_scfi0_bits[MPC8_SCFI0_SIZE]
static const int8_t mpc8_q3_bits[MPC8_Q3_SIZE]
void av_log(void *avcl, int level, const char *fmt,...)
const char * name
Name of the codec implementation.
uint64_t channel_layout
Audio channel layout.
void ff_mpadsp_init(MPADSPContext *s)
static const uint8_t mpc8_bands_codes[MPC8_BANDS_SIZE]
static av_cold void mpc8_decode_flush(AVCodecContext *avctx)
static const int8_t mpc8_idx51[125]
audio channel layout utility functions
static int mpc8_decode_frame(AVCodecContext *avctx, void *data, int *got_frame_ptr, AVPacket *avpkt)
static int mpc8_get_mod_golomb(GetBitContext *gb, int m)
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code.
static const uint8_t mpc8_q5_codes[2][MPC8_Q5_SIZE]
static const uint8_t mpc8_cnk_len[16][33]
#define INIT_VLC_USE_NEW_STATIC
static const uint8_t mpc8_q3_codes[MPC8_Q3_SIZE]
static void flush(AVCodecContext *avctx)
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome.
or the Software in violation of any applicable export control laws in any jurisdiction Except as provided by mandatorily applicable UPF has no obligation to provide you with source code to the Software In the event Software contains any source code
Musepack decoder MPEG Audio Layer 1/2 -like codec with frames of 1152 samples divided into 32 subband...
main external API structure.
int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags)
Get a buffer for a frame.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define init_vlc(vlc, nb_bits, nb_codes,bits, bits_wrap, bits_size,codes, codes_wrap, codes_size,flags)
static unsigned int av_lfg_get(AVLFG *c)
Get the next random unsigned 32-bit number using an ALFG.
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
synthesis window for stochastic i
static int init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
Initialize GetBitContext.
static const uint32_t mpc8_cnk[16][32]
static int mpc8_dec_base(GetBitContext *gb, int k, int n)
av_cold void av_lfg_init(AVLFG *c, unsigned int seed)
static unsigned int get_bits_long(GetBitContext *s, int n)
Read 0-32 bits.
static const uint16_t vlc_offsets[13]
static const unsigned int mpc8_thres[]
static const int8_t mpc8_q3_syms[MPC8_Q3_SIZE]
static const uint8_t mpc8_scfi1_codes[MPC8_SCFI1_SIZE]
static const int q3_offsets[2]
static const int8_t mpc8_q9up_bits[MPC8_Q9UP_SIZE]
common internal api header.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
static const int8_t mpc8_idx52[125]
static const uint8_t mpc8_q9up_codes[MPC8_Q9UP_SIZE]
static const uint8_t mpc8_q2_codes[2][MPC8_Q2_SIZE]
AVSampleFormat
Audio Sample Formats.
static const int8_t mpc8_q2_bits[2][MPC8_Q2_SIZE]
static const uint8_t mpc8_res_codes[2][MPC8_RES_SIZE]
int channels
number of audio channels
VLC_TYPE(* table)[2]
code, bits
static int mpc8_get_mask(GetBitContext *gb, int size, int t)
static const int8_t mpc8_res_bits[2][MPC8_RES_SIZE]
static const uint8_t mpc8_q6_codes[2][MPC8_Q6_SIZE]
static const int8_t mpc8_q6_bits[2][MPC8_Q6_SIZE]
static const uint8_t mpc8_q4_codes[MPC8_Q4_SIZE]
static int decode(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
struct MPCContext MPCContext
uint8_t ** extended_data
pointers to the data planes/channels.
#define AV_CH_LAYOUT_MONO
Subband structure - hold all variables for each subband.
This structure stores compressed data.
static int mpc8_dec_enum(GetBitContext *gb, int k, int n)
int nb_samples
number of audio samples (per channel) described by this frame
static const uint8_t mpc8_q7_codes[2][MPC8_Q7_SIZE]
static const uint8_t mpc8_scfi0_codes[MPC8_SCFI0_SIZE]
static const int8_t mpc8_q4_bits[MPC8_Q4_SIZE]