FFmpeg
libavcodec
mpc.h
Go to the documentation of this file.
1
/*
2
* Musepack decoder
3
* Copyright (c) 2006 Konstantin Shishkov
4
*
5
* This file is part of FFmpeg.
6
*
7
* FFmpeg is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* FFmpeg is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with FFmpeg; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
29
#ifndef AVCODEC_MPC_H
30
#define AVCODEC_MPC_H
31
32
#include "libavutil/lfg.h"
33
34
#include "
avcodec.h
"
35
#include "bswapdsp.h"
36
#include "
mpegaudio.h
"
37
#include "mpegaudiodsp.h"
38
39
#define BANDS 32
40
#define SAMPLES_PER_BAND 36
41
#define MPC_FRAME_SIZE (BANDS * SAMPLES_PER_BAND)
42
44
typedef
struct
Band
{
45
int
msf
;
46
int
res[2];
47
int
scfi[2];
48
int
scf_idx[2][3];
49
int
Q[2];
50
}
Band
;
51
52
typedef
struct
MPCContext
{
53
BswapDSPContext
bdsp;
54
MPADSPContext
mpadsp;
55
int
IS, MSS, gapless;
56
int
lastframelen;
57
int
maxbands, last_max_band;
58
int
last_bits_used;
59
int
oldDSCF[2][BANDS];
60
Band
bands[BANDS];
61
int
Q[2][MPC_FRAME_SIZE];
62
int
cur_frame, frames;
63
uint8_t *bits;
64
int
buf_size;
65
AVLFG
rnd;
66
int
frames_to_skip;
67
/* for synthesis */
68
DECLARE_ALIGNED
(16, MPA_INT, synth_buf)[MPA_MAX_CHANNELS][512*2];
69
int
synth_buf_offset[MPA_MAX_CHANNELS];
70
DECLARE_ALIGNED
(16, int32_t, sb_samples)[MPA_MAX_CHANNELS][36][SBLIMIT];
71
}
MPCContext
;
72
73
void
ff_mpc_init(
void
);
74
void
ff_mpc_dequantize_and_synth(
MPCContext
*c,
int
maxband, int16_t **out,
int
channels);
75
76
#endif
/* AVCODEC_MPC_H */
AVLFG
Definition:
lfg.h:27
Band::msf
int msf
mid-stereo flag
Definition:
mpc.h:45
Band
struct Band Band
Subband structure - hold all variables for each subband.
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition:
mem.h:120
avcodec.h
Libavcodec external API header.
BswapDSPContext
Definition:
bswapdsp.h:24
MPADSPContext
Definition:
mpegaudiodsp.h:27
mpegaudio.h
mpeg audio declarations for both encoder and decoder.
Band
Subband structure - hold all variables for each subband.
Definition:
mpc.h:44
MPCContext
Definition:
mpc.h:52
Generated by
1.8.12