FFmpeg
4.4.5
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
22
/**
23
* @file
24
* Musepack decoder
25
* MPEG Audio Layer 1/2 -like codec with frames of 1152 samples
26
* divided into 32 subbands.
27
*/
28
29
#ifndef AVCODEC_MPC_H
30
#define AVCODEC_MPC_H
31
32
#include "
libavutil/lfg.h
"
33
#include "
libavutil/mem_internal.h
"
34
35
#include "
avcodec.h
"
36
#include "
bswapdsp.h
"
37
#include "
mpegaudio.h
"
38
#include "
mpegaudiodsp.h
"
39
40
#define BANDS 32
41
#define SAMPLES_PER_BAND 36
42
#define MPC_FRAME_SIZE (BANDS * SAMPLES_PER_BAND)
43
44
/** Subband structure - hold all variables for each subband */
45
typedef
struct
Band
{
46
int
msf
;
///< mid-stereo flag
47
int
res
[2];
48
int
scfi
[2];
49
int
scf_idx
[2][3];
50
int
Q
[2];
51
}
Band
;
52
53
typedef
struct
MPCContext
{
54
BswapDSPContext
bdsp
;
55
MPADSPContext
mpadsp
;
56
int
IS
,
MSS
,
gapless
;
57
int
lastframelen
;
58
int
maxbands
,
last_max_band
;
59
int
last_bits_used
;
60
int
oldDSCF
[2][
BANDS
];
61
Band
bands
[
BANDS
];
62
int
Q
[2][
MPC_FRAME_SIZE
];
63
int
cur_frame
,
frames
;
64
uint8_t
*
bits
;
65
int
buf_size
;
66
AVLFG
rnd
;
67
int
frames_to_skip
;
68
/* for synthesis */
69
DECLARE_ALIGNED
(16,
MPA_INT
,
synth_buf
)[
MPA_MAX_CHANNELS
][512*2];
70
int
synth_buf_offset
[
MPA_MAX_CHANNELS
];
71
DECLARE_ALIGNED
(16,
int32_t
,
sb_samples
)[
MPA_MAX_CHANNELS
][36][
SBLIMIT
];
72
}
MPCContext
;
73
74
void
ff_mpc_dequantize_and_synth
(
MPCContext
*
c
,
int
maxband, int16_t **
out
,
int
channels
);
75
76
#endif
/* AVCODEC_MPC_H */
channels
channels
Definition:
aptx.h:33
uint8_t
uint8_t
Definition:
audio_convert.c:194
int32_t
int32_t
Definition:
audio_convert.c:194
avcodec.h
Libavcodec external API header.
bswapdsp.h
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition:
mem.h:117
lfg.h
mem_internal.h
BANDS
#define BANDS
Definition:
mpc.h:40
ff_mpc_dequantize_and_synth
void ff_mpc_dequantize_and_synth(MPCContext *c, int maxband, int16_t **out, int channels)
Definition:
mpc.c:56
MPC_FRAME_SIZE
#define MPC_FRAME_SIZE
Definition:
mpc.h:42
mpegaudio.h
mpeg audio declarations for both encoder and decoder.
MPA_MAX_CHANNELS
#define MPA_MAX_CHANNELS
Definition:
mpegaudio.h:42
SBLIMIT
#define SBLIMIT
Definition:
mpegaudio.h:44
MPA_INT
int32_t MPA_INT
Definition:
mpegaudio.h:75
mpegaudiodsp.h
AVLFG
Context structure for the Lagged Fibonacci PRNG.
Definition:
lfg.h:33
Band
Subband structure - hold all variables for each subband.
Definition:
mpc.h:45
Band::scf_idx
int scf_idx[2][3]
Definition:
mpc.h:49
Band::scfi
int scfi[2]
Definition:
mpc.h:48
Band::Q
int Q[2]
Definition:
mpc.h:50
Band::msf
int msf
mid-stereo flag
Definition:
mpc.h:46
Band::res
int res[2]
Definition:
mpc.h:47
BswapDSPContext
Definition:
bswapdsp.h:24
MPADSPContext
Definition:
mpegaudiodsp.h:27
MPCContext
Definition:
mpc.h:53
MPCContext::cur_frame
int cur_frame
Definition:
mpc.h:63
MPCContext::sb_samples
int32_t sb_samples[MPA_MAX_CHANNELS][36][SBLIMIT]
Definition:
mpc.h:71
MPCContext::frames_to_skip
int frames_to_skip
Definition:
mpc.h:67
MPCContext::synth_buf
MPA_INT synth_buf[MPA_MAX_CHANNELS][512 *2]
Definition:
mpc.h:69
MPCContext::bdsp
BswapDSPContext bdsp
Definition:
mpc.h:54
MPCContext::oldDSCF
int oldDSCF[2][BANDS]
Definition:
mpc.h:60
MPCContext::MSS
int MSS
Definition:
mpc.h:56
MPCContext::IS
int IS
Definition:
mpc.h:56
MPCContext::Q
int Q[2][MPC_FRAME_SIZE]
Definition:
mpc.h:62
MPCContext::gapless
int gapless
Definition:
mpc.h:56
MPCContext::maxbands
int maxbands
Definition:
mpc.h:58
MPCContext::synth_buf_offset
int synth_buf_offset[MPA_MAX_CHANNELS]
Definition:
mpc.h:70
MPCContext::bits
uint8_t * bits
Definition:
mpc.h:64
MPCContext::mpadsp
MPADSPContext mpadsp
Definition:
mpc.h:55
MPCContext::last_max_band
int last_max_band
Definition:
mpc.h:58
MPCContext::lastframelen
int lastframelen
Definition:
mpc.h:57
MPCContext::buf_size
int buf_size
Definition:
mpc.h:65
MPCContext::rnd
AVLFG rnd
Definition:
mpc.h:66
MPCContext::frames
int frames
Definition:
mpc.h:63
MPCContext::last_bits_used
int last_bits_used
Definition:
mpc.h:59
MPCContext::bands
Band bands[BANDS]
Definition:
mpc.h:61
out
FILE * out
Definition:
movenc.c:54
c
static double c[64]
Definition:
vsrc_mptestsrc.c:92
Generated on Sun Apr 20 2025 09:08:45 for FFmpeg by
1.9.1