FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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 "
avcodec.h
"
34
#include "
get_bits.h
"
35
#include "
dsputil.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
43
/** Subband structure - hold all variables for each subband */
44
typedef
struct
Band
{
45
int
msf
;
///< mid-stereo flag
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
AVFrame
frame
;
54
DSPContext
dsp
;
55
MPADSPContext
mpadsp
;
56
GetBitContext
gb
;
57
int
IS
,
MSS
,
gapless
;
58
int
lastframelen
;
59
int
maxbands
,
last_max_band
;
60
int
last_bits_used
;
61
int
oldDSCF
[2][
BANDS
];
62
Band
bands
[
BANDS
];
63
int
Q
[2][
MPC_FRAME_SIZE
];
64
int
cur_frame
,
frames
;
65
uint8_t
*
bits
;
66
int
buf_size
;
67
AVLFG
rnd
;
68
int
frames_to_skip
;
69
/* for synthesis */
70
DECLARE_ALIGNED
(16,
MPA_INT
,
synth_buf
)[
MPA_MAX_CHANNELS
][512*2];
71
int
synth_buf_offset
[
MPA_MAX_CHANNELS
];
72
DECLARE_ALIGNED
(16,
int32_t
,
sb_samples
)[
MPA_MAX_CHANNELS
][36][
SBLIMIT
];
73
}
MPCContext
;
74
75
void
ff_mpc_init
(
void
);
76
void
ff_mpc_dequantize_and_synth
(
MPCContext
*
c
,
int
maxband, int16_t **out,
int
channels);
77
78
#endif
/* AVCODEC_MPC_H */
Generated on Sat May 25 2013 03:58:37 for FFmpeg by
1.8.2