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
256da077
Commit
256da077
authored
Dec 27, 2013
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dsputil: Move mspel_pixels_tab to the only place it is used
parent
3832a659
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
135 additions
and
119 deletions
+135
-119
dsputil.c
libavcodec/dsputil.c
+4
-114
dsputil.h
libavcodec/dsputil.h
+4
-1
wmv2.c
libavcodec/wmv2.c
+4
-4
wmv2dsp.c
libavcodec/wmv2dsp.c
+119
-0
wmv2dsp.h
libavcodec/wmv2dsp.h
+4
-0
No files found.
libavcodec/dsputil.c
View file @
256da077
...
...
@@ -1191,113 +1191,12 @@ void ff_avg_pixels16x16_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride)
#define put_no_rnd_qpel8_mc00_c ff_put_pixels8x8_c
#define put_no_rnd_qpel16_mc00_c ff_put_pixels16x16_c
static
void
wmv2_mspel8_h_lowpass
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
dstStride
,
int
srcStride
,
int
h
)
void
ff_put_pixels8_l2_8
(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
int
dst_stride
,
int
src_stride1
,
int
src_stride2
,
int
h
)
{
const
uint8_t
*
cm
=
ff_crop_tab
+
MAX_NEG_CROP
;
int
i
;
for
(
i
=
0
;
i
<
h
;
i
++
)
{
dst
[
0
]
=
cm
[(
9
*
(
src
[
0
]
+
src
[
1
])
-
(
src
[
-
1
]
+
src
[
2
])
+
8
)
>>
4
];
dst
[
1
]
=
cm
[(
9
*
(
src
[
1
]
+
src
[
2
])
-
(
src
[
0
]
+
src
[
3
])
+
8
)
>>
4
];
dst
[
2
]
=
cm
[(
9
*
(
src
[
2
]
+
src
[
3
])
-
(
src
[
1
]
+
src
[
4
])
+
8
)
>>
4
];
dst
[
3
]
=
cm
[(
9
*
(
src
[
3
]
+
src
[
4
])
-
(
src
[
2
]
+
src
[
5
])
+
8
)
>>
4
];
dst
[
4
]
=
cm
[(
9
*
(
src
[
4
]
+
src
[
5
])
-
(
src
[
3
]
+
src
[
6
])
+
8
)
>>
4
];
dst
[
5
]
=
cm
[(
9
*
(
src
[
5
]
+
src
[
6
])
-
(
src
[
4
]
+
src
[
7
])
+
8
)
>>
4
];
dst
[
6
]
=
cm
[(
9
*
(
src
[
6
]
+
src
[
7
])
-
(
src
[
5
]
+
src
[
8
])
+
8
)
>>
4
];
dst
[
7
]
=
cm
[(
9
*
(
src
[
7
]
+
src
[
8
])
-
(
src
[
6
]
+
src
[
9
])
+
8
)
>>
4
];
dst
+=
dstStride
;
src
+=
srcStride
;
}
}
static
void
wmv2_mspel8_v_lowpass
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
dstStride
,
int
srcStride
,
int
w
)
{
const
uint8_t
*
cm
=
ff_crop_tab
+
MAX_NEG_CROP
;
int
i
;
for
(
i
=
0
;
i
<
w
;
i
++
)
{
const
int
src_1
=
src
[
-
srcStride
];
const
int
src0
=
src
[
0
];
const
int
src1
=
src
[
srcStride
];
const
int
src2
=
src
[
2
*
srcStride
];
const
int
src3
=
src
[
3
*
srcStride
];
const
int
src4
=
src
[
4
*
srcStride
];
const
int
src5
=
src
[
5
*
srcStride
];
const
int
src6
=
src
[
6
*
srcStride
];
const
int
src7
=
src
[
7
*
srcStride
];
const
int
src8
=
src
[
8
*
srcStride
];
const
int
src9
=
src
[
9
*
srcStride
];
dst
[
0
*
dstStride
]
=
cm
[(
9
*
(
src0
+
src1
)
-
(
src_1
+
src2
)
+
8
)
>>
4
];
dst
[
1
*
dstStride
]
=
cm
[(
9
*
(
src1
+
src2
)
-
(
src0
+
src3
)
+
8
)
>>
4
];
dst
[
2
*
dstStride
]
=
cm
[(
9
*
(
src2
+
src3
)
-
(
src1
+
src4
)
+
8
)
>>
4
];
dst
[
3
*
dstStride
]
=
cm
[(
9
*
(
src3
+
src4
)
-
(
src2
+
src5
)
+
8
)
>>
4
];
dst
[
4
*
dstStride
]
=
cm
[(
9
*
(
src4
+
src5
)
-
(
src3
+
src6
)
+
8
)
>>
4
];
dst
[
5
*
dstStride
]
=
cm
[(
9
*
(
src5
+
src6
)
-
(
src4
+
src7
)
+
8
)
>>
4
];
dst
[
6
*
dstStride
]
=
cm
[(
9
*
(
src6
+
src7
)
-
(
src5
+
src8
)
+
8
)
>>
4
];
dst
[
7
*
dstStride
]
=
cm
[(
9
*
(
src7
+
src8
)
-
(
src6
+
src9
)
+
8
)
>>
4
];
src
++
;
dst
++
;
}
}
static
void
put_mspel8_mc10_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
half
[
64
];
wmv2_mspel8_h_lowpass
(
half
,
src
,
8
,
stride
,
8
);
put_pixels8_l2_8
(
dst
,
src
,
half
,
stride
,
stride
,
8
,
8
);
}
static
void
put_mspel8_mc20_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
wmv2_mspel8_h_lowpass
(
dst
,
src
,
stride
,
stride
,
8
);
}
put_pixels8_l2_8
(
dst
,
src1
,
src2
,
dst_stride
,
src_stride1
,
src_stride2
,
h
);
static
void
put_mspel8_mc30_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
half
[
64
];
wmv2_mspel8_h_lowpass
(
half
,
src
,
8
,
stride
,
8
);
put_pixels8_l2_8
(
dst
,
src
+
1
,
half
,
stride
,
stride
,
8
,
8
);
}
static
void
put_mspel8_mc02_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
wmv2_mspel8_v_lowpass
(
dst
,
src
,
stride
,
stride
,
8
);
}
static
void
put_mspel8_mc12_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
uint8_t
halfV
[
64
];
uint8_t
halfHV
[
64
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
halfV
,
src
,
8
,
stride
,
8
);
wmv2_mspel8_v_lowpass
(
halfHV
,
halfH
+
8
,
8
,
8
,
8
);
put_pixels8_l2_8
(
dst
,
halfV
,
halfHV
,
stride
,
8
,
8
,
8
);
}
static
void
put_mspel8_mc32_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
uint8_t
halfV
[
64
];
uint8_t
halfHV
[
64
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
halfV
,
src
+
1
,
8
,
stride
,
8
);
wmv2_mspel8_v_lowpass
(
halfHV
,
halfH
+
8
,
8
,
8
,
8
);
put_pixels8_l2_8
(
dst
,
halfV
,
halfHV
,
stride
,
8
,
8
,
8
);
}
static
void
put_mspel8_mc22_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
dst
,
halfH
+
8
,
stride
,
8
,
8
);
}
static
inline
int
pix_abs16_c
(
MpegEncContext
*
v
,
uint8_t
*
pix1
,
uint8_t
*
pix2
,
...
...
@@ -2360,15 +2259,6 @@ av_cold void ff_dsputil_init(DSPContext *c, AVCodecContext *avctx)
#undef dspfunc
c
->
put_mspel_pixels_tab
[
0
]
=
ff_put_pixels8x8_c
;
c
->
put_mspel_pixels_tab
[
1
]
=
put_mspel8_mc10_c
;
c
->
put_mspel_pixels_tab
[
2
]
=
put_mspel8_mc20_c
;
c
->
put_mspel_pixels_tab
[
3
]
=
put_mspel8_mc30_c
;
c
->
put_mspel_pixels_tab
[
4
]
=
put_mspel8_mc02_c
;
c
->
put_mspel_pixels_tab
[
5
]
=
put_mspel8_mc12_c
;
c
->
put_mspel_pixels_tab
[
6
]
=
put_mspel8_mc22_c
;
c
->
put_mspel_pixels_tab
[
7
]
=
put_mspel8_mc32_c
;
#define SET_CMP_FUNC(name) \
c->name[0] = name ## 16_c; \
c->name[1] = name ## 8x8_c;
...
...
libavcodec/dsputil.h
View file @
256da077
...
...
@@ -39,6 +39,10 @@ void ff_avg_pixels8x8_c(uint8_t *dst, uint8_t *src, ptrdiff_t stride);
void
ff_put_pixels16x16_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_avg_pixels16x16_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
);
void
ff_put_pixels8_l2_8
(
uint8_t
*
dst
,
const
uint8_t
*
src1
,
const
uint8_t
*
src2
,
int
dst_stride
,
int
src_stride1
,
int
src_stride2
,
int
h
);
void
ff_gmc_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
stride
,
int
h
,
int
ox
,
int
oy
,
int
dxx
,
int
dxy
,
int
dyx
,
int
dyy
,
int
shift
,
int
r
,
int
width
,
int
height
);
...
...
@@ -174,7 +178,6 @@ typedef struct DSPContext {
qpel_mc_func
put_qpel_pixels_tab
[
2
][
16
];
qpel_mc_func
avg_qpel_pixels_tab
[
2
][
16
];
qpel_mc_func
put_no_rnd_qpel_pixels_tab
[
2
][
16
];
qpel_mc_func
put_mspel_pixels_tab
[
8
];
me_cmp_func
pix_abs
[
2
][
4
];
...
...
libavcodec/wmv2.c
View file @
256da077
...
...
@@ -129,10 +129,10 @@ void ff_mspel_motion(MpegEncContext *s,
emu
=
1
;
}
s
->
dsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
,
ptr
,
linesize
);
s
->
dsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
,
ptr
+
8
,
linesize
);
s
->
dsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
*
linesize
,
ptr
+
8
*
linesize
,
linesize
);
s
->
dsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
+
8
*
linesize
,
ptr
+
8
+
8
*
linesize
,
linesize
);
w
->
wdsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
,
ptr
,
linesize
);
w
->
wdsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
,
ptr
+
8
,
linesize
);
w
->
wdsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
*
linesize
,
ptr
+
8
*
linesize
,
linesize
);
w
->
wdsp
.
put_mspel_pixels_tab
[
dxy
](
dest_y
+
8
+
8
*
linesize
,
ptr
+
8
+
8
*
linesize
,
linesize
);
if
(
s
->
flags
&
CODEC_FLAG_GRAY
)
return
;
...
...
libavcodec/wmv2dsp.c
View file @
256da077
...
...
@@ -20,6 +20,7 @@
#include "libavutil/common.h"
#include "avcodec.h"
#include "dsputil.h"
#include "mathops.h"
#include "wmv2dsp.h"
#define W0 2048
...
...
@@ -138,9 +139,127 @@ static void wmv2_idct_put_c(uint8_t *dest, int line_size, int16_t *block)
}
}
static
void
wmv2_mspel8_h_lowpass
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
dstStride
,
int
srcStride
,
int
h
)
{
const
uint8_t
*
cm
=
ff_crop_tab
+
MAX_NEG_CROP
;
int
i
;
for
(
i
=
0
;
i
<
h
;
i
++
)
{
dst
[
0
]
=
cm
[(
9
*
(
src
[
0
]
+
src
[
1
])
-
(
src
[
-
1
]
+
src
[
2
])
+
8
)
>>
4
];
dst
[
1
]
=
cm
[(
9
*
(
src
[
1
]
+
src
[
2
])
-
(
src
[
0
]
+
src
[
3
])
+
8
)
>>
4
];
dst
[
2
]
=
cm
[(
9
*
(
src
[
2
]
+
src
[
3
])
-
(
src
[
1
]
+
src
[
4
])
+
8
)
>>
4
];
dst
[
3
]
=
cm
[(
9
*
(
src
[
3
]
+
src
[
4
])
-
(
src
[
2
]
+
src
[
5
])
+
8
)
>>
4
];
dst
[
4
]
=
cm
[(
9
*
(
src
[
4
]
+
src
[
5
])
-
(
src
[
3
]
+
src
[
6
])
+
8
)
>>
4
];
dst
[
5
]
=
cm
[(
9
*
(
src
[
5
]
+
src
[
6
])
-
(
src
[
4
]
+
src
[
7
])
+
8
)
>>
4
];
dst
[
6
]
=
cm
[(
9
*
(
src
[
6
]
+
src
[
7
])
-
(
src
[
5
]
+
src
[
8
])
+
8
)
>>
4
];
dst
[
7
]
=
cm
[(
9
*
(
src
[
7
]
+
src
[
8
])
-
(
src
[
6
]
+
src
[
9
])
+
8
)
>>
4
];
dst
+=
dstStride
;
src
+=
srcStride
;
}
}
static
void
wmv2_mspel8_v_lowpass
(
uint8_t
*
dst
,
uint8_t
*
src
,
int
dstStride
,
int
srcStride
,
int
w
)
{
const
uint8_t
*
cm
=
ff_crop_tab
+
MAX_NEG_CROP
;
int
i
;
for
(
i
=
0
;
i
<
w
;
i
++
)
{
const
int
src_1
=
src
[
-
srcStride
];
const
int
src0
=
src
[
0
];
const
int
src1
=
src
[
srcStride
];
const
int
src2
=
src
[
2
*
srcStride
];
const
int
src3
=
src
[
3
*
srcStride
];
const
int
src4
=
src
[
4
*
srcStride
];
const
int
src5
=
src
[
5
*
srcStride
];
const
int
src6
=
src
[
6
*
srcStride
];
const
int
src7
=
src
[
7
*
srcStride
];
const
int
src8
=
src
[
8
*
srcStride
];
const
int
src9
=
src
[
9
*
srcStride
];
dst
[
0
*
dstStride
]
=
cm
[(
9
*
(
src0
+
src1
)
-
(
src_1
+
src2
)
+
8
)
>>
4
];
dst
[
1
*
dstStride
]
=
cm
[(
9
*
(
src1
+
src2
)
-
(
src0
+
src3
)
+
8
)
>>
4
];
dst
[
2
*
dstStride
]
=
cm
[(
9
*
(
src2
+
src3
)
-
(
src1
+
src4
)
+
8
)
>>
4
];
dst
[
3
*
dstStride
]
=
cm
[(
9
*
(
src3
+
src4
)
-
(
src2
+
src5
)
+
8
)
>>
4
];
dst
[
4
*
dstStride
]
=
cm
[(
9
*
(
src4
+
src5
)
-
(
src3
+
src6
)
+
8
)
>>
4
];
dst
[
5
*
dstStride
]
=
cm
[(
9
*
(
src5
+
src6
)
-
(
src4
+
src7
)
+
8
)
>>
4
];
dst
[
6
*
dstStride
]
=
cm
[(
9
*
(
src6
+
src7
)
-
(
src5
+
src8
)
+
8
)
>>
4
];
dst
[
7
*
dstStride
]
=
cm
[(
9
*
(
src7
+
src8
)
-
(
src6
+
src9
)
+
8
)
>>
4
];
src
++
;
dst
++
;
}
}
static
void
put_mspel8_mc10_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
half
[
64
];
wmv2_mspel8_h_lowpass
(
half
,
src
,
8
,
stride
,
8
);
ff_put_pixels8_l2_8
(
dst
,
src
,
half
,
stride
,
stride
,
8
,
8
);
}
static
void
put_mspel8_mc20_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
wmv2_mspel8_h_lowpass
(
dst
,
src
,
stride
,
stride
,
8
);
}
static
void
put_mspel8_mc30_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
half
[
64
];
wmv2_mspel8_h_lowpass
(
half
,
src
,
8
,
stride
,
8
);
ff_put_pixels8_l2_8
(
dst
,
src
+
1
,
half
,
stride
,
stride
,
8
,
8
);
}
static
void
put_mspel8_mc02_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
wmv2_mspel8_v_lowpass
(
dst
,
src
,
stride
,
stride
,
8
);
}
static
void
put_mspel8_mc12_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
uint8_t
halfV
[
64
];
uint8_t
halfHV
[
64
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
halfV
,
src
,
8
,
stride
,
8
);
wmv2_mspel8_v_lowpass
(
halfHV
,
halfH
+
8
,
8
,
8
,
8
);
ff_put_pixels8_l2_8
(
dst
,
halfV
,
halfHV
,
stride
,
8
,
8
,
8
);
}
static
void
put_mspel8_mc32_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
uint8_t
halfV
[
64
];
uint8_t
halfHV
[
64
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
halfV
,
src
+
1
,
8
,
stride
,
8
);
wmv2_mspel8_v_lowpass
(
halfHV
,
halfH
+
8
,
8
,
8
,
8
);
ff_put_pixels8_l2_8
(
dst
,
halfV
,
halfHV
,
stride
,
8
,
8
,
8
);
}
static
void
put_mspel8_mc22_c
(
uint8_t
*
dst
,
uint8_t
*
src
,
ptrdiff_t
stride
)
{
uint8_t
halfH
[
88
];
wmv2_mspel8_h_lowpass
(
halfH
,
src
-
stride
,
8
,
stride
,
11
);
wmv2_mspel8_v_lowpass
(
dst
,
halfH
+
8
,
stride
,
8
,
8
);
}
av_cold
void
ff_wmv2dsp_init
(
WMV2DSPContext
*
c
)
{
c
->
idct_add
=
wmv2_idct_add_c
;
c
->
idct_put
=
wmv2_idct_put_c
;
c
->
idct_perm
=
FF_NO_IDCT_PERM
;
c
->
put_mspel_pixels_tab
[
0
]
=
ff_put_pixels8x8_c
;
c
->
put_mspel_pixels_tab
[
1
]
=
put_mspel8_mc10_c
;
c
->
put_mspel_pixels_tab
[
2
]
=
put_mspel8_mc20_c
;
c
->
put_mspel_pixels_tab
[
3
]
=
put_mspel8_mc30_c
;
c
->
put_mspel_pixels_tab
[
4
]
=
put_mspel8_mc02_c
;
c
->
put_mspel_pixels_tab
[
5
]
=
put_mspel8_mc12_c
;
c
->
put_mspel_pixels_tab
[
6
]
=
put_mspel8_mc22_c
;
c
->
put_mspel_pixels_tab
[
7
]
=
put_mspel8_mc32_c
;
}
libavcodec/wmv2dsp.h
View file @
256da077
...
...
@@ -21,10 +21,14 @@
#include <stdint.h>
#include "dsputil.h"
typedef
struct
WMV2DSPContext
{
void
(
*
idct_add
)(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
);
void
(
*
idct_put
)(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
);
qpel_mc_func
put_mspel_pixels_tab
[
8
];
int
idct_perm
;
}
WMV2DSPContext
;
...
...
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