Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
Commits
6836af52
Commit
6836af52
authored
Feb 07, 2007
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
doxygenize
Originally committed as revision 7872 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
013591c5
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
46 additions
and
34 deletions
+46
-34
wma.h
libavcodec/wma.h
+22
-22
wmadec.c
libavcodec/wmadec.c
+24
-12
No files found.
libavcodec/wma.h
View file @
6836af52
...
@@ -51,11 +51,11 @@
...
@@ -51,11 +51,11 @@
#define VLCMAX ((22+VLCBITS-1)/VLCBITS)
#define VLCMAX ((22+VLCBITS-1)/VLCBITS)
typedef
struct
CoefVLCTable
{
typedef
struct
CoefVLCTable
{
int
n
;
/* total number of codes */
int
n
;
///< total number of codes
int
max_level
;
int
max_level
;
const
uint32_t
*
huffcodes
;
/* VLC bit values */
const
uint32_t
*
huffcodes
;
///< VLC bit values
const
uint8_t
*
huffbits
;
/* VLC bit size */
const
uint8_t
*
huffbits
;
///< VLC bit size
const
uint16_t
*
levels
;
/* table to build run/level tables */
const
uint16_t
*
levels
;
///< table to build run/level tables
}
CoefVLCTable
;
}
CoefVLCTable
;
typedef
struct
WMADecodeContext
{
typedef
struct
WMADecodeContext
{
...
@@ -64,19 +64,19 @@ typedef struct WMADecodeContext {
...
@@ -64,19 +64,19 @@ typedef struct WMADecodeContext {
int
sample_rate
;
int
sample_rate
;
int
nb_channels
;
int
nb_channels
;
int
bit_rate
;
int
bit_rate
;
int
version
;
/* 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2) */
int
version
;
///< 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2)
int
block_align
;
int
block_align
;
int
use_bit_reservoir
;
int
use_bit_reservoir
;
int
use_variable_block_len
;
int
use_variable_block_len
;
int
use_exp_vlc
;
/* exponent coding: 0 = lsp, 1 = vlc + delta */
int
use_exp_vlc
;
///< exponent coding: 0 = lsp, 1 = vlc + delta
int
use_noise_coding
;
/* true if perceptual noise is added */
int
use_noise_coding
;
///< true if perceptual noise is added
int
byte_offset_bits
;
int
byte_offset_bits
;
VLC
exp_vlc
;
VLC
exp_vlc
;
int
exponent_sizes
[
BLOCK_NB_SIZES
];
int
exponent_sizes
[
BLOCK_NB_SIZES
];
uint16_t
exponent_bands
[
BLOCK_NB_SIZES
][
25
];
uint16_t
exponent_bands
[
BLOCK_NB_SIZES
][
25
];
int
high_band_start
[
BLOCK_NB_SIZES
];
/* index of first coef in high band */
int
high_band_start
[
BLOCK_NB_SIZES
];
///< index of first coef in high band
int
coefs_start
;
/* first coded coef */
int
coefs_start
;
///< first coded coef
int
coefs_end
[
BLOCK_NB_SIZES
];
/* max number of coded coefficients */
int
coefs_end
[
BLOCK_NB_SIZES
];
///< max number of coded coefficients
int
exponent_high_sizes
[
BLOCK_NB_SIZES
];
int
exponent_high_sizes
[
BLOCK_NB_SIZES
];
int
exponent_high_bands
[
BLOCK_NB_SIZES
][
HIGH_BAND_MAX_SIZE
];
int
exponent_high_bands
[
BLOCK_NB_SIZES
][
HIGH_BAND_MAX_SIZE
];
VLC
hgain_vlc
;
VLC
hgain_vlc
;
...
@@ -93,19 +93,19 @@ typedef struct WMADecodeContext {
...
@@ -93,19 +93,19 @@ typedef struct WMADecodeContext {
uint16_t
*
int_table
[
2
];
uint16_t
*
int_table
[
2
];
CoefVLCTable
*
coef_vlcs
[
2
];
CoefVLCTable
*
coef_vlcs
[
2
];
/* frame info */
/* frame info */
int
frame_len
;
/* frame length in samples */
int
frame_len
;
///< frame length in samples
int
frame_len_bits
;
/* frame_len = 1 << frame_len_bits */
int
frame_len_bits
;
///< frame_len = 1 << frame_len_bits
int
nb_block_sizes
;
/* number of block sizes */
int
nb_block_sizes
;
///< number of block sizes
/* block info */
/* block info */
int
reset_block_lengths
;
int
reset_block_lengths
;
int
block_len_bits
;
/* log2 of current block length */
int
block_len_bits
;
///< log2 of current block length
int
next_block_len_bits
;
/* log2 of next block length */
int
next_block_len_bits
;
///< log2 of next block length
int
prev_block_len_bits
;
/* log2 of prev block length */
int
prev_block_len_bits
;
///< log2 of prev block length
int
block_len
;
/* block length in samples */
int
block_len
;
///< block length in samples
int
block_num
;
/* block number in current frame */
int
block_num
;
///< block number in current frame
int
block_pos
;
/* current position in frame */
int
block_pos
;
///< current position in frame
uint8_t
ms_stereo
;
/* true if mid/side stereo mode */
uint8_t
ms_stereo
;
///< true if mid/side stereo mode
uint8_t
channel_coded
[
MAX_CHANNELS
];
/* true if channel is coded */
uint8_t
channel_coded
[
MAX_CHANNELS
];
///< true if channel is coded
DECLARE_ALIGNED_16
(
float
,
exponents
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
]);
DECLARE_ALIGNED_16
(
float
,
exponents
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
]);
float
max_exponent
[
MAX_CHANNELS
];
float
max_exponent
[
MAX_CHANNELS
];
int16_t
coefs1
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
];
int16_t
coefs1
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
];
...
@@ -114,7 +114,7 @@ typedef struct WMADecodeContext {
...
@@ -114,7 +114,7 @@ typedef struct WMADecodeContext {
DECLARE_ALIGNED_16
(
float
,
window
[
BLOCK_MAX_SIZE
*
2
]);
DECLARE_ALIGNED_16
(
float
,
window
[
BLOCK_MAX_SIZE
*
2
]);
MDCTContext
mdct_ctx
[
BLOCK_NB_SIZES
];
MDCTContext
mdct_ctx
[
BLOCK_NB_SIZES
];
float
*
windows
[
BLOCK_NB_SIZES
];
float
*
windows
[
BLOCK_NB_SIZES
];
DECLARE_ALIGNED_16
(
FFTSample
,
mdct_tmp
[
BLOCK_MAX_SIZE
]);
/
* temporary storage for imdct */
DECLARE_ALIGNED_16
(
FFTSample
,
mdct_tmp
[
BLOCK_MAX_SIZE
]);
/
//< temporary storage for imdct
/* output buffer for one frame and the last for IMDCT windowing */
/* output buffer for one frame and the last for IMDCT windowing */
DECLARE_ALIGNED_16
(
float
,
frame_out
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
*
2
]);
DECLARE_ALIGNED_16
(
float
,
frame_out
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
*
2
]);
/* last frame info */
/* last frame info */
...
...
libavcodec/wmadec.c
View file @
6836af52
...
@@ -127,8 +127,10 @@ static int wma_decode_init(AVCodecContext * avctx)
...
@@ -127,8 +127,10 @@ static int wma_decode_init(AVCodecContext * avctx)
return
0
;
return
0
;
}
}
/* interpolate values for a bigger or smaller block. The block must
/**
have multiple sizes */
* interpolate values for a bigger or smaller block. The block must
* have multiple sizes
*/
static
void
interpolate_array
(
float
*
scale
,
int
old_size
,
int
new_size
)
static
void
interpolate_array
(
float
*
scale
,
int
old_size
,
int
new_size
)
{
{
int
i
,
j
,
jincr
,
k
;
int
i
,
j
,
jincr
,
k
;
...
@@ -154,10 +156,12 @@ static void interpolate_array(float *scale, int old_size, int new_size)
...
@@ -154,10 +156,12 @@ static void interpolate_array(float *scale, int old_size, int new_size)
}
}
}
}
/* compute x^-0.25 with an exponent and mantissa table. We use linear
/**
interpolation to reduce the mantissa table size at a small speed
* compute x^-0.25 with an exponent and mantissa table. We use linear
expense (linear interpolation approximately doubles the number of
* interpolation to reduce the mantissa table size at a small speed
bits of precision). */
* expense (linear interpolation approximately doubles the number of
* bits of precision).
*/
static
inline
float
pow_m1_4
(
WMADecodeContext
*
s
,
float
x
)
static
inline
float
pow_m1_4
(
WMADecodeContext
*
s
,
float
x
)
{
{
union
{
union
{
...
@@ -214,8 +218,10 @@ static void wma_lsp_to_curve_init(WMADecodeContext *s, int frame_len)
...
@@ -214,8 +218,10 @@ static void wma_lsp_to_curve_init(WMADecodeContext *s, int frame_len)
#endif
#endif
}
}
/* NOTE: We use the same code as Vorbis here */
/**
/* XXX: optimize it further with SSE/3Dnow */
* NOTE: We use the same code as Vorbis here
* @todo optimize it further with SSE/3Dnow
*/
static
void
wma_lsp_to_curve
(
WMADecodeContext
*
s
,
static
void
wma_lsp_to_curve
(
WMADecodeContext
*
s
,
float
*
out
,
float
*
val_max_ptr
,
float
*
out
,
float
*
val_max_ptr
,
int
n
,
float
*
lsp
)
int
n
,
float
*
lsp
)
...
@@ -243,7 +249,9 @@ static void wma_lsp_to_curve(WMADecodeContext *s,
...
@@ -243,7 +249,9 @@ static void wma_lsp_to_curve(WMADecodeContext *s,
*
val_max_ptr
=
val_max
;
*
val_max_ptr
=
val_max
;
}
}
/* decode exponents coded with LSP coefficients (same idea as Vorbis) */
/**
* decode exponents coded with LSP coefficients (same idea as Vorbis)
*/
static
void
decode_exp_lsp
(
WMADecodeContext
*
s
,
int
ch
)
static
void
decode_exp_lsp
(
WMADecodeContext
*
s
,
int
ch
)
{
{
float
lsp_coefs
[
NB_LSP_COEFS
];
float
lsp_coefs
[
NB_LSP_COEFS
];
...
@@ -261,7 +269,9 @@ static void decode_exp_lsp(WMADecodeContext *s, int ch)
...
@@ -261,7 +269,9 @@ static void decode_exp_lsp(WMADecodeContext *s, int ch)
s
->
block_len
,
lsp_coefs
);
s
->
block_len
,
lsp_coefs
);
}
}
/* decode exponents coded with VLC codes */
/**
* decode exponents coded with VLC codes
*/
static
int
decode_exp_vlc
(
WMADecodeContext
*
s
,
int
ch
)
static
int
decode_exp_vlc
(
WMADecodeContext
*
s
,
int
ch
)
{
{
int
last_exp
,
n
,
code
;
int
last_exp
,
n
,
code
;
...
@@ -304,8 +314,10 @@ static int decode_exp_vlc(WMADecodeContext *s, int ch)
...
@@ -304,8 +314,10 @@ static int decode_exp_vlc(WMADecodeContext *s, int ch)
return
0
;
return
0
;
}
}
/* return 0 if OK. return 1 if last block of frame. return -1 if
/**
unrecorrable error. */
* @return 0 if OK. 1 if last block of frame. return -1 if
* unrecorrable error.
*/
static
int
wma_decode_block
(
WMADecodeContext
*
s
)
static
int
wma_decode_block
(
WMADecodeContext
*
s
)
{
{
int
n
,
v
,
a
,
ch
,
code
,
bsize
;
int
n
,
v
,
a
,
ch
,
code
,
bsize
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment