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
d9669eab
Commit
d9669eab
authored
Jun 14, 2012
by
Ronald S. Bultje
Committed by
Mans Rullgard
Jun 17, 2012
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwt: remove variable-length arrays
Signed-off-by:
Mans Rullgard
<
mans@mansr.com
>
parent
8e50c57d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
79 additions
and
74 deletions
+79
-74
dwt.c
libavcodec/dwt.c
+55
-54
dwt.h
libavcodec/dwt.h
+9
-9
snow.c
libavcodec/snow.c
+4
-0
snow.h
libavcodec/snow.h
+2
-0
snowdec.c
libavcodec/snowdec.c
+1
-1
snowenc.c
libavcodec/snowenc.c
+6
-6
snowdsp_mmx.c
libavcodec/x86/snowdsp_mmx.c
+2
-4
No files found.
libavcodec/dwt.c
View file @
d9669eab
This diff is collapsed.
Click to expand it.
libavcodec/dwt.h
View file @
d9669eab
...
...
@@ -50,7 +50,7 @@ typedef struct DWTContext {
void
(
*
vertical_compose97i
)(
IDWTELEM
*
b0
,
IDWTELEM
*
b1
,
IDWTELEM
*
b2
,
IDWTELEM
*
b3
,
IDWTELEM
*
b4
,
IDWTELEM
*
b5
,
int
width
);
void
(
*
horizontal_compose97i
)(
IDWTELEM
*
b
,
int
width
);
void
(
*
horizontal_compose97i
)(
IDWTELEM
*
b
,
IDWTELEM
*
temp
,
int
width
);
void
(
*
inner_add_yblock
)(
const
uint8_t
*
obmc
,
const
int
obmc_stride
,
uint8_t
**
block
,
int
b_w
,
int
b_h
,
int
src_x
,
int
src_y
,
int
src_stride
,
slice_buffer
*
sb
,
...
...
@@ -148,7 +148,7 @@ IDWTELEM *ff_slice_buffer_load_line(slice_buffer *buf, int line);
void
ff_snow_vertical_compose97i
(
IDWTELEM
*
b0
,
IDWTELEM
*
b1
,
IDWTELEM
*
b2
,
IDWTELEM
*
b3
,
IDWTELEM
*
b4
,
IDWTELEM
*
b5
,
int
width
);
void
ff_snow_horizontal_compose97i
(
IDWTELEM
*
b
,
int
width
);
void
ff_snow_horizontal_compose97i
(
IDWTELEM
*
b
,
IDWTELEM
*
temp
,
int
width
);
void
ff_snow_inner_add_yblock
(
const
uint8_t
*
obmc
,
const
int
obmc_stride
,
uint8_t
**
block
,
int
b_w
,
int
b_h
,
int
src_x
,
int
src_y
,
int
src_stride
,
slice_buffer
*
sb
,
...
...
@@ -157,18 +157,18 @@ void ff_snow_inner_add_yblock(const uint8_t *obmc, const int obmc_stride,
int
ff_w53_32_c
(
void
*
v
,
uint8_t
*
pix1
,
uint8_t
*
pix2
,
int
line_size
,
int
h
);
int
ff_w97_32_c
(
void
*
v
,
uint8_t
*
pix1
,
uint8_t
*
pix2
,
int
line_size
,
int
h
);
void
ff_spatial_dwt
(
int
*
buffer
,
int
width
,
int
height
,
int
stride
,
int
typ
e
,
int
decomposition_count
);
void
ff_spatial_dwt
(
int
*
buffer
,
int
*
temp
,
int
width
,
int
height
,
int
strid
e
,
int
type
,
int
decomposition_count
);
void
ff_spatial_idwt_buffered_init
(
DWTCompose
*
cs
,
slice_buffer
*
sb
,
int
width
,
int
height
,
int
stride_line
,
int
type
,
int
decomposition_count
);
void
ff_spatial_idwt_buffered_slice
(
DWTContext
*
dsp
,
DWTCompose
*
cs
,
slice_buffer
*
slice_buf
,
int
width
,
int
height
,
int
stride_line
,
int
typ
e
,
int
decomposition_count
,
int
y
);
void
ff_spatial_idwt
(
IDWTELEM
*
buffer
,
int
width
,
int
height
,
int
stride
,
int
type
,
int
decomposition_count
);
slice_buffer
*
slice_buf
,
IDWTELEM
*
temp
,
int
width
,
int
height
,
int
stride_lin
e
,
int
type
,
int
decomposition_count
,
int
y
);
void
ff_spatial_idwt
(
IDWTELEM
*
buffer
,
IDWTELEM
*
temp
,
int
width
,
int
height
,
int
stride
,
int
type
,
int
decomposition_count
);
void
ff_dwt_init
(
DWTContext
*
c
);
void
ff_dwt_init_x86
(
DWTContext
*
c
);
...
...
libavcodec/snow.c
View file @
d9669eab
...
...
@@ -440,6 +440,8 @@ av_cold int ff_snow_common_init(AVCodecContext *avctx){
s
->
spatial_idwt_buffer
=
av_mallocz
(
width
*
height
*
sizeof
(
IDWTELEM
));
s
->
spatial_dwt_buffer
=
av_mallocz
(
width
*
height
*
sizeof
(
DWTELEM
));
//FIXME this does not belong here
s
->
temp_dwt_buffer
=
av_mallocz
(
width
*
sizeof
(
DWTELEM
));
s
->
temp_idwt_buffer
=
av_mallocz
(
width
*
sizeof
(
IDWTELEM
));
for
(
i
=
0
;
i
<
MAX_REF_FRAMES
;
i
++
)
for
(
j
=
0
;
j
<
MAX_REF_FRAMES
;
j
++
)
...
...
@@ -618,7 +620,9 @@ av_cold void ff_snow_common_end(SnowContext *s)
int
plane_index
,
level
,
orientation
,
i
;
av_freep
(
&
s
->
spatial_dwt_buffer
);
av_freep
(
&
s
->
temp_dwt_buffer
);
av_freep
(
&
s
->
spatial_idwt_buffer
);
av_freep
(
&
s
->
temp_idwt_buffer
);
s
->
m
.
me
.
temp
=
NULL
;
av_freep
(
&
s
->
m
.
me
.
scratchpad
);
...
...
libavcodec/snow.h
View file @
d9669eab
...
...
@@ -132,7 +132,9 @@ typedef struct SnowContext{
int16_t
(
*
ref_mvs
[
MAX_REF_FRAMES
])[
2
];
uint32_t
*
ref_scores
[
MAX_REF_FRAMES
];
DWTELEM
*
spatial_dwt_buffer
;
DWTELEM
*
temp_dwt_buffer
;
IDWTELEM
*
spatial_idwt_buffer
;
IDWTELEM
*
temp_idwt_buffer
;
int
colorspace_type
;
int
chroma_h_shift
;
int
chroma_v_shift
;
...
...
libavcodec/snowdec.c
View file @
d9669eab
...
...
@@ -502,7 +502,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
}
for
(;
yd
<
slice_h
;
yd
+=
4
){
ff_spatial_idwt_buffered_slice
(
&
s
->
dwt
,
cs
,
&
s
->
sb
,
w
,
h
,
1
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
,
yd
);
ff_spatial_idwt_buffered_slice
(
&
s
->
dwt
,
cs
,
&
s
->
sb
,
s
->
temp_idwt_buffer
,
w
,
h
,
1
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
,
yd
);
}
if
(
s
->
qlog
==
LOSSLESS_QLOG
){
...
...
libavcodec/snowenc.c
View file @
d9669eab
...
...
@@ -93,7 +93,7 @@ static void dwt_quantize(SnowContext *s, Plane *p, DWTELEM *buffer, int width, i
//FIXME pass the copy cleanly ?
// memcpy(dwt_buffer, buffer, height * stride * sizeof(DWTELEM));
ff_spatial_dwt
(
buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
ff_spatial_dwt
(
buffer
,
s
->
temp_dwt_buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
for
(
level
=
0
;
level
<
s
->
spatial_decomposition_count
;
level
++
){
for
(
orientation
=
level
?
1
:
0
;
orientation
<
4
;
orientation
++
){
...
...
@@ -118,7 +118,7 @@ static void dwt_quantize(SnowContext *s, Plane *p, DWTELEM *buffer, int width, i
for
(
xs
=
0
;
xs
<
Q2_STEP
;
xs
++
){
memcpy
(
idwt2_buffer
,
best_dequant
,
height
*
stride
*
sizeof
(
IDWTELEM
));
dequantize_all
(
s
,
p
,
idwt2_buffer
,
width
,
height
);
ff_spatial_idwt
(
idwt2_buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
ff_spatial_idwt
(
idwt2_buffer
,
s
->
temp_idwt_buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
find_sse
(
s
,
p
,
best_score
,
score_stride
,
idwt2_buffer
,
s
->
spatial_idwt_buffer
,
level
,
orientation
);
memcpy
(
idwt2_buffer
,
best_dequant
,
height
*
stride
*
sizeof
(
IDWTELEM
));
for
(
y
=
ys
;
y
<
b
->
height
;
y
+=
Q2_STEP
){
...
...
@@ -129,7 +129,7 @@ static void dwt_quantize(SnowContext *s, Plane *p, DWTELEM *buffer, int width, i
}
}
dequantize_all
(
s
,
p
,
idwt2_buffer
,
width
,
height
);
ff_spatial_idwt
(
idwt2_buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
ff_spatial_idwt
(
idwt2_buffer
,
s
->
temp_idwt_buffer
,
width
,
height
,
stride
,
type
,
s
->
spatial_decomposition_count
);
find_sse
(
s
,
p
,
score
,
score_stride
,
idwt2_buffer
,
s
->
spatial_idwt_buffer
,
level
,
orientation
);
for
(
y
=
ys
;
y
<
b
->
height
;
y
+=
Q2_STEP
){
for
(
x
=
xs
;
x
<
b
->
width
;
x
+=
Q2_STEP
){
...
...
@@ -1586,7 +1586,7 @@ static void calculate_visual_weight(SnowContext *s, Plane *p){
memset
(
s
->
spatial_idwt_buffer
,
0
,
sizeof
(
*
s
->
spatial_idwt_buffer
)
*
width
*
height
);
ibuf
[
b
->
width
/
2
+
b
->
height
/
2
*
b
->
stride
]
=
256
*
16
;
ff_spatial_idwt
(
s
->
spatial_idwt_buffer
,
width
,
height
,
width
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
ff_spatial_idwt
(
s
->
spatial_idwt_buffer
,
s
->
temp_idwt_buffer
,
width
,
height
,
width
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
for
(
y
=
0
;
y
<
height
;
y
++
){
for
(
x
=
0
;
x
<
width
;
x
++
){
int64_t
d
=
s
->
spatial_idwt_buffer
[
x
+
y
*
width
]
*
16
;
...
...
@@ -1775,7 +1775,7 @@ redo_frame:
/* if(QUANTIZE2)
dwt_quantize(s, p, s->spatial_dwt_buffer, w, h, w, s->spatial_decomposition_type);
else*/
ff_spatial_dwt
(
s
->
spatial_dwt_buffer
,
w
,
h
,
w
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
ff_spatial_dwt
(
s
->
spatial_dwt_buffer
,
s
->
temp_dwt_buffer
,
w
,
h
,
w
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
if
(
s
->
pass1_rc
&&
plane_index
==
0
){
int
delta_qlog
=
ratecontrol_1pass
(
s
,
pic
);
...
...
@@ -1814,7 +1814,7 @@ redo_frame:
}
}
ff_spatial_idwt
(
s
->
spatial_idwt_buffer
,
w
,
h
,
w
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
ff_spatial_idwt
(
s
->
spatial_idwt_buffer
,
s
->
temp_idwt_buffer
,
w
,
h
,
w
,
s
->
spatial_decomposition_type
,
s
->
spatial_decomposition_count
);
if
(
s
->
qlog
==
LOSSLESS_QLOG
){
for
(
y
=
0
;
y
<
h
;
y
++
){
for
(
x
=
0
;
x
<
w
;
x
++
){
...
...
libavcodec/x86/snowdsp_mmx.c
View file @
d9669eab
...
...
@@ -26,9 +26,8 @@
#include "libavcodec/dwt.h"
#include "dsputil_mmx.h"
static
void
ff_snow_horizontal_compose97i_sse2
(
IDWTELEM
*
b
,
int
width
){
static
void
ff_snow_horizontal_compose97i_sse2
(
IDWTELEM
*
b
,
IDWTELEM
*
temp
,
int
width
){
const
int
w2
=
(
width
+
1
)
>>
1
;
DECLARE_ALIGNED
(
16
,
IDWTELEM
,
temp
)[
width
>>
1
];
const
int
w_l
=
(
width
>>
1
);
const
int
w_r
=
w2
-
1
;
int
i
;
...
...
@@ -215,9 +214,8 @@ static void ff_snow_horizontal_compose97i_sse2(IDWTELEM *b, int width){
}
}
static
void
ff_snow_horizontal_compose97i_mmx
(
IDWTELEM
*
b
,
int
width
){
static
void
ff_snow_horizontal_compose97i_mmx
(
IDWTELEM
*
b
,
IDWTELEM
*
temp
,
int
width
){
const
int
w2
=
(
width
+
1
)
>>
1
;
IDWTELEM
temp
[
width
>>
1
];
const
int
w_l
=
(
width
>>
1
);
const
int
w_r
=
w2
-
1
;
int
i
;
...
...
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