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
149f2058
Commit
149f2058
authored
Jan 30, 2012
by
Justin Ruggles
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
adpcmenc: use int16_t and uint8_t instead of short and unsigned char.
parent
dd88ae83
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
23 deletions
+24
-23
adpcm.h
libavcodec/adpcm.h
+3
-3
adpcmenc.c
libavcodec/adpcmenc.c
+21
-20
No files found.
libavcodec/adpcm.h
View file @
149f2058
...
@@ -30,14 +30,14 @@
...
@@ -30,14 +30,14 @@
typedef
struct
ADPCMChannelStatus
{
typedef
struct
ADPCMChannelStatus
{
int
predictor
;
int
predictor
;
short
in
t
step_index
;
int16_
t
step_index
;
int
step
;
int
step
;
/* for encoding */
/* for encoding */
int
prev_sample
;
int
prev_sample
;
/* MS version */
/* MS version */
shor
t
sample1
;
int16_
t
sample1
;
shor
t
sample2
;
int16_
t
sample2
;
int
coeff1
;
int
coeff1
;
int
coeff2
;
int
coeff2
;
int
idelta
;
int
idelta
;
...
...
libavcodec/adpcmenc.c
View file @
149f2058
...
@@ -166,8 +166,8 @@ static av_cold int adpcm_encode_close(AVCodecContext *avctx)
...
@@ -166,8 +166,8 @@ static av_cold int adpcm_encode_close(AVCodecContext *avctx)
}
}
static
inline
u
nsigned
char
adpcm_ima_compress_sample
(
ADPCMChannelStatus
*
c
,
static
inline
u
int8_t
adpcm_ima_compress_sample
(
ADPCMChannelStatus
*
c
,
shor
t
sample
)
int16_
t
sample
)
{
{
int
delta
=
sample
-
c
->
prev_sample
;
int
delta
=
sample
-
c
->
prev_sample
;
int
nibble
=
FFMIN
(
7
,
abs
(
delta
)
*
4
/
int
nibble
=
FFMIN
(
7
,
abs
(
delta
)
*
4
/
...
@@ -179,8 +179,8 @@ static inline unsigned char adpcm_ima_compress_sample(ADPCMChannelStatus *c,
...
@@ -179,8 +179,8 @@ static inline unsigned char adpcm_ima_compress_sample(ADPCMChannelStatus *c,
return
nibble
;
return
nibble
;
}
}
static
inline
u
nsigned
char
adpcm_ima_qt_compress_sample
(
ADPCMChannelStatus
*
c
,
static
inline
u
int8_t
adpcm_ima_qt_compress_sample
(
ADPCMChannelStatus
*
c
,
shor
t
sample
)
int16_
t
sample
)
{
{
int
delta
=
sample
-
c
->
prev_sample
;
int
delta
=
sample
-
c
->
prev_sample
;
int
mask
,
step
=
ff_adpcm_step_table
[
c
->
step_index
];
int
mask
,
step
=
ff_adpcm_step_table
[
c
->
step_index
];
...
@@ -213,8 +213,8 @@ static inline unsigned char adpcm_ima_qt_compress_sample(ADPCMChannelStatus *c,
...
@@ -213,8 +213,8 @@ static inline unsigned char adpcm_ima_qt_compress_sample(ADPCMChannelStatus *c,
return
nibble
;
return
nibble
;
}
}
static
inline
u
nsigned
char
adpcm_ms_compress_sample
(
ADPCMChannelStatus
*
c
,
static
inline
u
int8_t
adpcm_ms_compress_sample
(
ADPCMChannelStatus
*
c
,
shor
t
sample
)
int16_
t
sample
)
{
{
int
predictor
,
nibble
,
bias
;
int
predictor
,
nibble
,
bias
;
...
@@ -242,8 +242,8 @@ static inline unsigned char adpcm_ms_compress_sample(ADPCMChannelStatus *c,
...
@@ -242,8 +242,8 @@ static inline unsigned char adpcm_ms_compress_sample(ADPCMChannelStatus *c,
return
nibble
;
return
nibble
;
}
}
static
inline
u
nsigned
char
adpcm_yamaha_compress_sample
(
ADPCMChannelStatus
*
c
,
static
inline
u
int8_t
adpcm_yamaha_compress_sample
(
ADPCMChannelStatus
*
c
,
shor
t
sample
)
int16_
t
sample
)
{
{
int
nibble
,
delta
;
int
nibble
,
delta
;
...
@@ -264,8 +264,9 @@ static inline unsigned char adpcm_yamaha_compress_sample(ADPCMChannelStatus *c,
...
@@ -264,8 +264,9 @@ static inline unsigned char adpcm_yamaha_compress_sample(ADPCMChannelStatus *c,
return
nibble
;
return
nibble
;
}
}
static
void
adpcm_compress_trellis
(
AVCodecContext
*
avctx
,
const
short
*
samples
,
static
void
adpcm_compress_trellis
(
AVCodecContext
*
avctx
,
uint8_t
*
dst
,
ADPCMChannelStatus
*
c
,
int
n
)
const
int16_t
*
samples
,
uint8_t
*
dst
,
ADPCMChannelStatus
*
c
,
int
n
)
{
{
//FIXME 6% faster if frontier is a compile-time constant
//FIXME 6% faster if frontier is a compile-time constant
ADPCMEncodeContext
*
s
=
avctx
->
priv_data
;
ADPCMEncodeContext
*
s
=
avctx
->
priv_data
;
...
@@ -469,35 +470,35 @@ static void adpcm_compress_trellis(AVCodecContext *avctx, const short *samples,
...
@@ -469,35 +470,35 @@ static void adpcm_compress_trellis(AVCodecContext *avctx, const short *samples,
c
->
idelta
=
nodes
[
0
]
->
step
;
c
->
idelta
=
nodes
[
0
]
->
step
;
}
}
static
int
adpcm_encode_frame
(
AVCodecContext
*
avctx
,
static
int
adpcm_encode_frame
(
AVCodecContext
*
avctx
,
uint8_t
*
frame
,
unsigned
char
*
frame
,
int
buf_size
,
void
*
data
)
int
buf_size
,
void
*
data
)
{
{
int
n
,
i
,
st
;
int
n
,
i
,
st
;
shor
t
*
samples
;
int16_
t
*
samples
;
u
nsigned
char
*
dst
;
u
int8_t
*
dst
;
ADPCMEncodeContext
*
c
=
avctx
->
priv_data
;
ADPCMEncodeContext
*
c
=
avctx
->
priv_data
;
uint8_t
*
buf
;
uint8_t
*
buf
;
dst
=
frame
;
dst
=
frame
;
samples
=
(
short
*
)
data
;
samples
=
data
;
st
=
avctx
->
channels
==
2
;
st
=
avctx
->
channels
==
2
;
/* n = (BLKSIZE - 4 * avctx->channels) / (2 * 8 * avctx->channels); */
/* n = (BLKSIZE - 4 * avctx->channels) / (2 * 8 * avctx->channels); */
switch
(
avctx
->
codec
->
id
)
{
switch
(
avctx
->
codec
->
id
)
{
case
CODEC_ID_ADPCM_IMA_WAV
:
case
CODEC_ID_ADPCM_IMA_WAV
:
n
=
avctx
->
frame_size
/
8
;
n
=
avctx
->
frame_size
/
8
;
c
->
status
[
0
].
prev_sample
=
(
signed
short
)
samples
[
0
];
/* XXX */
c
->
status
[
0
].
prev_sample
=
samples
[
0
];
/* c->status[0].step_index = 0;
/* c->status[0].step_index = 0;
XXX: not sure how to init the state machine */
XXX: not sure how to init the state machine */
bytestream_put_le16
(
&
dst
,
c
->
status
[
0
].
prev_sample
);
bytestream_put_le16
(
&
dst
,
c
->
status
[
0
].
prev_sample
);
*
dst
++
=
(
u
nsigned
char
)
c
->
status
[
0
].
step_index
;
*
dst
++
=
(
u
int8_t
)
c
->
status
[
0
].
step_index
;
*
dst
++
=
0
;
/* unknown */
*
dst
++
=
0
;
/* unknown */
samples
++
;
samples
++
;
if
(
avctx
->
channels
==
2
)
{
if
(
avctx
->
channels
==
2
)
{
c
->
status
[
1
].
prev_sample
=
(
signed
short
)
samples
[
0
];
c
->
status
[
1
].
prev_sample
=
samples
[
0
];
/* c->status[1].step_index = 0; */
/* c->status[1].step_index = 0; */
bytestream_put_le16
(
&
dst
,
c
->
status
[
1
].
prev_sample
);
bytestream_put_le16
(
&
dst
,
c
->
status
[
1
].
prev_sample
);
*
dst
++
=
(
u
nsigned
char
)
c
->
status
[
1
].
step_index
;
*
dst
++
=
(
u
int8_t
)
c
->
status
[
1
].
step_index
;
*
dst
++
=
0
;
*
dst
++
=
0
;
samples
++
;
samples
++
;
}
}
...
@@ -597,7 +598,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx,
...
@@ -597,7 +598,7 @@ static int adpcm_encode_frame(AVCodecContext *avctx,
c
->
status
[
i
].
step_index
=
av_clip
(
c
->
status
[
i
].
step_index
,
0
,
63
);
c
->
status
[
i
].
step_index
=
av_clip
(
c
->
status
[
i
].
step_index
,
0
,
63
);
put_sbits
(
&
pb
,
16
,
samples
[
i
]);
put_sbits
(
&
pb
,
16
,
samples
[
i
]);
put_bits
(
&
pb
,
6
,
c
->
status
[
i
].
step_index
);
put_bits
(
&
pb
,
6
,
c
->
status
[
i
].
step_index
);
c
->
status
[
i
].
prev_sample
=
(
signed
short
)
samples
[
i
];
c
->
status
[
i
].
prev_sample
=
samples
[
i
];
}
}
if
(
avctx
->
trellis
>
0
)
{
if
(
avctx
->
trellis
>
0
)
{
...
...
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