Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
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 @@
#define VLCMAX ((22+VLCBITS-1)/VLCBITS)
typedef
struct
CoefVLCTable
{
int
n
;
/* total number of codes */
int
n
;
///< total number of codes
int
max_level
;
const
uint32_t
*
huffcodes
;
/* VLC bit values */
const
uint8_t
*
huffbits
;
/* VLC bit size */
const
uint16_t
*
levels
;
/* table to build run/level tables */
const
uint32_t
*
huffcodes
;
///< VLC bit values
const
uint8_t
*
huffbits
;
///< VLC bit size
const
uint16_t
*
levels
;
///< table to build run/level tables
}
CoefVLCTable
;
typedef
struct
WMADecodeContext
{
...
...
@@ -64,19 +64,19 @@ typedef struct WMADecodeContext {
int
sample_rate
;
int
nb_channels
;
int
bit_rate
;
int
version
;
/* 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2) */
int
version
;
///< 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2)
int
block_align
;
int
use_bit_reservoir
;
int
use_variable_block_len
;
int
use_exp_vlc
;
/* exponent coding: 0 = lsp, 1 = vlc + delta */
int
use_noise_coding
;
/* true if perceptual noise is added */
int
use_exp_vlc
;
///< exponent coding: 0 = lsp, 1 = vlc + delta
int
use_noise_coding
;
///< true if perceptual noise is added
int
byte_offset_bits
;
VLC
exp_vlc
;
int
exponent_sizes
[
BLOCK_NB_SIZES
];
uint16_t
exponent_bands
[
BLOCK_NB_SIZES
][
25
];
int
high_band_start
[
BLOCK_NB_SIZES
];
/* index of first coef in high band */
int
coefs_start
;
/* first coded coef */
int
coefs_end
[
BLOCK_NB_SIZES
];
/* max number of coded coefficients */
int
high_band_start
[
BLOCK_NB_SIZES
];
///< index of first coef in high band
int
coefs_start
;
///< first coded coef
int
coefs_end
[
BLOCK_NB_SIZES
];
///< max number of coded coefficients
int
exponent_high_sizes
[
BLOCK_NB_SIZES
];
int
exponent_high_bands
[
BLOCK_NB_SIZES
][
HIGH_BAND_MAX_SIZE
];
VLC
hgain_vlc
;
...
...
@@ -93,19 +93,19 @@ typedef struct WMADecodeContext {
uint16_t
*
int_table
[
2
];
CoefVLCTable
*
coef_vlcs
[
2
];
/* frame info */
int
frame_len
;
/* frame length in samples */
int
frame_len_bits
;
/* frame_len = 1 << frame_len_bits */
int
nb_block_sizes
;
/* number of block sizes */
int
frame_len
;
///< frame length in samples
int
frame_len_bits
;
///< frame_len = 1 << frame_len_bits
int
nb_block_sizes
;
///< number of block sizes
/* block info */
int
reset_block_lengths
;
int
block_len_bits
;
/* log2 of current block length */
int
next_block_len_bits
;
/* log2 of next block length */
int
prev_block_len_bits
;
/* log2 of prev block length */
int
block_len
;
/* block length in samples */
int
block_num
;
/* block number in current frame */
int
block_pos
;
/* current position in frame */
uint8_t
ms_stereo
;
/* true if mid/side stereo mode */
uint8_t
channel_coded
[
MAX_CHANNELS
];
/* true if channel is coded */
int
block_len_bits
;
///< log2 of current block length
int
next_block_len_bits
;
///< log2 of next block length
int
prev_block_len_bits
;
///< log2 of prev block length
int
block_len
;
///< block length in samples
int
block_num
;
///< block number in current frame
int
block_pos
;
///< current position in frame
uint8_t
ms_stereo
;
///< true if mid/side stereo mode
uint8_t
channel_coded
[
MAX_CHANNELS
];
///< true if channel is coded
DECLARE_ALIGNED_16
(
float
,
exponents
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
]);
float
max_exponent
[
MAX_CHANNELS
];
int16_t
coefs1
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
];
...
...
@@ -114,7 +114,7 @@ typedef struct WMADecodeContext {
DECLARE_ALIGNED_16
(
float
,
window
[
BLOCK_MAX_SIZE
*
2
]);
MDCTContext
mdct_ctx
[
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 */
DECLARE_ALIGNED_16
(
float
,
frame_out
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
*
2
]);
/* last frame info */
...
...
libavcodec/wmadec.c
View file @
6836af52
...
...
@@ -127,8 +127,10 @@ static int wma_decode_init(AVCodecContext * avctx)
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
)
{
int
i
,
j
,
jincr
,
k
;
...
...
@@ -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
expense (linear interpolation approximately doubles the number of
bits of precision). */
/**
* compute x^-0.25 with an exponent and mantissa table. We use linear
* interpolation to reduce the mantissa table size at a small speed
* expense (linear interpolation approximately doubles the number of
* bits of precision).
*/
static
inline
float
pow_m1_4
(
WMADecodeContext
*
s
,
float
x
)
{
union
{
...
...
@@ -214,8 +218,10 @@ static void wma_lsp_to_curve_init(WMADecodeContext *s, int frame_len)
#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
,
float
*
out
,
float
*
val_max_ptr
,
int
n
,
float
*
lsp
)
...
...
@@ -243,7 +249,9 @@ static void wma_lsp_to_curve(WMADecodeContext *s,
*
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
)
{
float
lsp_coefs
[
NB_LSP_COEFS
];
...
...
@@ -261,7 +269,9 @@ static void decode_exp_lsp(WMADecodeContext *s, int ch)
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
)
{
int
last_exp
,
n
,
code
;
...
...
@@ -304,8 +314,10 @@ static int decode_exp_vlc(WMADecodeContext *s, int ch)
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
)
{
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