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
2ec9fa5e
Commit
2ec9fa5e
authored
Sep 07, 2016
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
idct: Change type of array stride parameters to ptrdiff_t
ptrdiff_t is the correct type for array strides and similar.
parent
b2939a75
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
184 additions
and
166 deletions
+184
-166
optimization.txt
doc/optimization.txt
+1
-1
idct.h
libavcodec/arm/idct.h
+7
-6
idctdsp_arm.S
libavcodec/arm/idctdsp_arm.S
+1
-1
idctdsp_init_arm.c
libavcodec/arm/idctdsp_init_arm.c
+10
-5
idctdsp_init_armv6.c
libavcodec/arm/idctdsp_init_armv6.c
+1
-1
simple_idct_armv6.S
libavcodec/arm/simple_idct_armv6.S
+2
-2
simple_idct_neon.S
libavcodec/arm/simple_idct_neon.S
+2
-2
vc1dsp_init_neon.c
libavcodec/arm/vc1dsp_init_neon.c
+7
-7
vc1dsp_neon.S
libavcodec/arm/vc1dsp_neon.S
+3
-3
dct.h
libavcodec/dct.h
+3
-2
dv.h
libavcodec/dv.h
+1
-1
dvdec.c
libavcodec/dvdec.c
+1
-1
faanidct.c
libavcodec/faanidct.c
+7
-3
faanidct.h
libavcodec/faanidct.h
+3
-2
idctdsp.c
libavcodec/idctdsp.c
+5
-5
idctdsp.h
libavcodec/idctdsp.h
+7
-7
jrevdct.c
libavcodec/jrevdct.c
+2
-2
idctdsp.c
libavcodec/ppc/idctdsp.c
+2
-2
vc1dsp_altivec.c
libavcodec/ppc/vc1dsp_altivec.c
+2
-1
simple_idct.c
libavcodec/simple_idct.c
+6
-6
simple_idct.h
libavcodec/simple_idct.h
+9
-8
simple_idct_template.c
libavcodec/simple_idct_template.c
+4
-4
dct.c
libavcodec/tests/dct.c
+3
-2
vc1dsp.c
libavcodec/vc1dsp.c
+27
-27
vc1dsp.h
libavcodec/vc1dsp.h
+7
-7
wmv2dsp.c
libavcodec/wmv2dsp.c
+2
-2
wmv2dsp.h
libavcodec/wmv2dsp.h
+2
-2
idctdsp.h
libavcodec/x86/idctdsp.h
+4
-3
idctdsp_mmx.c
libavcodec/x86/idctdsp_mmx.c
+3
-3
simple_idct.c
libavcodec/x86/simple_idct.c
+2
-2
simple_idct.h
libavcodec/x86/simple_idct.h
+3
-2
vc1dsp_mmx.c
libavcodec/x86/vc1dsp_mmx.c
+30
-30
xvididct.h
libavcodec/x86/xvididct.h
+7
-6
xvididct_mmx.c
libavcodec/x86/xvididct_mmx.c
+4
-4
xvididct_sse2.c
libavcodec/x86/xvididct_sse2.c
+2
-2
xvididct.c
libavcodec/xvididct.c
+2
-2
No files found.
doc/optimization.txt
View file @
2ec9fa5e
...
...
@@ -142,7 +142,7 @@ Alignment:
Some instructions on some architectures have strict alignment restrictions,
for example most SSE/SSE2 instructions on x86.
The minimum guaranteed alignment is written in the .h files, for example:
void (*put_pixels_clamped)(const int16_t *block/*align 16*/,
UINT8 *pixels/*align 8*/, int line_siz
e);
void (*put_pixels_clamped)(const int16_t *block/*align 16*/,
uint8_t *pixels/*align 8*/, ptrdiff_t strid
e);
General Tips:
...
...
libavcodec/arm/idct.h
View file @
2ec9fa5e
...
...
@@ -19,6 +19,7 @@
#ifndef AVCODEC_ARM_IDCT_H
#define AVCODEC_ARM_IDCT_H
#include <stddef.h>
#include <stdint.h>
void
ff_j_rev_dct_arm
(
int16_t
*
data
);
...
...
@@ -26,15 +27,15 @@ void ff_j_rev_dct_arm(int16_t *data);
void
ff_simple_idct_arm
(
int16_t
*
data
);
void
ff_simple_idct_armv5te
(
int16_t
*
data
);
void
ff_simple_idct_put_armv5te
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_armv5te
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_put_armv5te
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_armv5te
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_armv6
(
int16_t
*
data
);
void
ff_simple_idct_put_armv6
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_armv6
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_put_armv6
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_armv6
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_neon
(
int16_t
*
data
);
void
ff_simple_idct_put_neon
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_neon
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_put_neon
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
void
ff_simple_idct_add_neon
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
data
);
#endif
/* AVCODEC_ARM_IDCT_H */
libavcodec/arm/idctdsp_arm.S
View file @
2ec9fa5e
...
...
@@ -22,7 +22,7 @@
#include "config.h"
#include "libavutil/arm/asm.S"
@ void ff_add_pixels_clamped_arm(int16_t *block, uint8_t *dest,
in
t stride)
@ void ff_add_pixels_clamped_arm(int16_t *block, uint8_t *dest,
ptrdiff_
t stride)
function ff_add_pixels_clamped_arm, export=1, align=5
push {r4-r10}
mov r10, #8
...
...
libavcodec/arm/idctdsp_init_arm.c
View file @
2ec9fa5e
...
...
@@ -19,6 +19,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stddef.h>
#include <stdint.h>
#include "libavutil/attributes.h"
...
...
@@ -30,29 +31,33 @@
#include "idctdsp_arm.h"
void
ff_add_pixels_clamped_arm
(
const
int16_t
*
block
,
uint8_t
*
dest
,
in
t
line_size
);
ptrdiff_
t
line_size
);
/* XXX: those functions should be suppressed ASAP when all IDCTs are
* converted */
static
void
j_rev_dct_arm_put
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
)
static
void
j_rev_dct_arm_put
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
*
block
)
{
ff_j_rev_dct_arm
(
block
);
ff_put_pixels_clamped
(
block
,
dest
,
line_size
);
}
static
void
j_rev_dct_arm_add
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
)
static
void
j_rev_dct_arm_add
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
*
block
)
{
ff_j_rev_dct_arm
(
block
);
ff_add_pixels_clamped
(
block
,
dest
,
line_size
);
}
static
void
simple_idct_arm_put
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
)
static
void
simple_idct_arm_put
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
*
block
)
{
ff_simple_idct_arm
(
block
);
ff_put_pixels_clamped
(
block
,
dest
,
line_size
);
}
static
void
simple_idct_arm_add
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
)
static
void
simple_idct_arm_add
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
*
block
)
{
ff_simple_idct_arm
(
block
);
ff_add_pixels_clamped
(
block
,
dest
,
line_size
);
...
...
libavcodec/arm/idctdsp_init_armv6.c
View file @
2ec9fa5e
...
...
@@ -27,7 +27,7 @@
#include "idctdsp_arm.h"
void
ff_add_pixels_clamped_armv6
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
ptrdiff_
t
line_size
);
av_cold
void
ff_idctdsp_init_armv6
(
IDCTDSPContext
*
c
,
AVCodecContext
*
avctx
,
unsigned
high_bit_depth
)
...
...
libavcodec/arm/simple_idct_armv6.S
View file @
2ec9fa5e
...
...
@@ -390,7 +390,7 @@ function ff_simple_idct_armv6, export=1
pop {r4-r11, pc}
endfunc
/* ff_simple_idct_add_armv6(uint8_t *dest,
in
t line_size, int16_t *data); */
/* ff_simple_idct_add_armv6(uint8_t *dest,
ptrdiff_
t line_size, int16_t *data); */
function ff_simple_idct_add_armv6, export=1
push {r0, r1, r4-r11, lr}
sub sp, sp, #128
...
...
@@ -407,7 +407,7 @@ function ff_simple_idct_add_armv6, export=1
pop {r4-r11, pc}
endfunc
/* ff_simple_idct_put_armv6(uint8_t *dest,
in
t line_size, int16_t *data); */
/* ff_simple_idct_put_armv6(uint8_t *dest,
ptrdiff_
t line_size, int16_t *data); */
function ff_simple_idct_put_armv6, export=1
push {r0, r1, r4-r11, lr}
sub sp, sp, #128
...
...
libavcodec/arm/simple_idct_neon.S
View file @
2ec9fa5e
...
...
@@ -261,7 +261,7 @@ endconst
pop {r4-r7, pc}
.endm
/* void ff_simple_idct_put_neon(uint8_t *dst,
in
t line_size, int16_t *data); */
/* void ff_simple_idct_put_neon(uint8_t *dst,
ptrdiff_
t line_size, int16_t *data); */
function ff_simple_idct_put_neon, export=1
idct_start r2
...
...
@@ -316,7 +316,7 @@ function idct_col4_add8_neon
bx lr
endfunc
/* void ff_simple_idct_add_neon(uint8_t *dst,
in
t line_size, int16_t *data); */
/* void ff_simple_idct_add_neon(uint8_t *dst,
ptrdiff_
t line_size, int16_t *data); */
function ff_simple_idct_add_neon, export=1
idct_start r2
...
...
libavcodec/arm/vc1dsp_init_neon.c
View file @
2ec9fa5e
...
...
@@ -25,14 +25,14 @@
#include "config.h"
void
ff_vc1_inv_trans_8x8_neon
(
int16_t
*
block
);
void
ff_vc1_inv_trans_4x8_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x4_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x4_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x8_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x4_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x4_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x8_dc_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x8_dc_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x4_dc_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x4_dc_neon
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x8_dc_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x8_dc_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_8x4_dc_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_vc1_inv_trans_4x4_dc_neon
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
ff_put_pixels8x8_neon
(
uint8_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
line_size
,
int
rnd
);
...
...
libavcodec/arm/vc1dsp_neon.S
View file @
2ec9fa5e
...
...
@@ -426,7 +426,7 @@ function ff_vc1_inv_trans_8x8_neon, export=1
bx lr
endfunc
@ (uint8_t *dest [r0],
int linesiz
e [r1], int16_t *block [r2])
@ (uint8_t *dest [r0],
ptrdiff_t strid
e [r1], int16_t *block [r2])
function ff_vc1_inv_trans_8x4_neon, export=1
vld1.64 {q0-q1}, [r2,:128]! @ load 8 * 4 * 2 = 64 bytes / 16 bytes per quad = 4 quad registers
vld1.64 {q2-q3}, [r2,:128]
...
...
@@ -511,7 +511,7 @@ function ff_vc1_inv_trans_8x4_neon, export=1
bx lr
endfunc
@ (uint8_t *dest [r0],
int linesiz
e [r1], int16_t *block [r2])
@ (uint8_t *dest [r0],
ptrdiff_t strid
e [r1], int16_t *block [r2])
function ff_vc1_inv_trans_4x8_neon, export=1
mov r12, #(8 * 2) @ 8 elements per line, each element 2 bytes
vld4.16 {d0[], d2[], d4[], d6[]}, [r2,:64], r12 @ read each column into a q register
...
...
@@ -593,7 +593,7 @@ endfunc
vshr.s16 q1, q1, #\rshift @ dst[3,1] >>= rshift
.endm
@ (uint8_t *dest [r0],
int linesiz
e [r1], int16_t *block [r2])
@ (uint8_t *dest [r0],
ptrdiff_t strid
e [r1], int16_t *block [r2])
function ff_vc1_inv_trans_4x4_neon, export=1
mov r12, #(8 * 2) @ 8 elements per line, each element 2 bytes
vld4.16 {d0[], d1[], d2[], d3[]}, [r2,:64], r12 @ read each column into a register
...
...
libavcodec/dct.h
View file @
2ec9fa5e
...
...
@@ -24,6 +24,7 @@
#ifndef AVCODEC_DCT_H
#define AVCODEC_DCT_H
#include <stddef.h>
#include <stdint.h>
#include "rdft.h"
...
...
@@ -59,7 +60,7 @@ void ff_fdct248_islow_8(int16_t *data);
void
ff_fdct248_islow_10
(
int16_t
*
data
);
void
ff_j_rev_dct
(
int16_t
*
data
);
void
ff_jref_idct_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_jref_idct_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_jref_idct_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_jref_idct_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
#endif
/* AVCODEC_DCT_H */
libavcodec/dv.h
View file @
2ec9fa5e
...
...
@@ -47,7 +47,7 @@ typedef struct DVVideoContext {
void
(
*
get_pixels
)(
int16_t
*
block
,
const
uint8_t
*
pixels
,
ptrdiff_t
linesize
);
void
(
*
fdct
[
2
])(
int16_t
*
block
);
void
(
*
idct_put
[
2
])(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
idct_put
[
2
])(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
me_cmp_func
ildct_cmp
;
DVwork_chunk
work_chunks
[
4
*
12
*
27
];
uint32_t
idct_factor
[
2
*
4
*
16
*
64
];
...
...
libavcodec/dvdec.c
View file @
2ec9fa5e
...
...
@@ -52,7 +52,7 @@ typedef struct BlockInfo {
const
uint32_t
*
factor_table
;
const
uint8_t
*
scan_table
;
uint8_t
pos
;
/* position in block */
void
(
*
idct_put
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
idct_put
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
uint8_t
partial_bit_count
;
uint32_t
partial_bit_buffer
;
int
shift_offset
;
...
...
libavcodec/faanidct.c
View file @
2ec9fa5e
...
...
@@ -47,7 +47,9 @@ B6*B0/8, B6*B1/8, B6*B2/8, B6*B3/8, B6*B4/8, B6*B5/8, B6*B6/8, B6*B7/8,
B7
*
B0
/
8
,
B7
*
B1
/
8
,
B7
*
B2
/
8
,
B7
*
B3
/
8
,
B7
*
B4
/
8
,
B7
*
B5
/
8
,
B7
*
B6
/
8
,
B7
*
B7
/
8
,
};
static
inline
void
p8idct
(
int16_t
data
[
64
],
FLOAT
temp
[
64
],
uint8_t
*
dest
,
int
stride
,
int
x
,
int
y
,
int
type
){
static
inline
void
p8idct
(
int16_t
data
[
64
],
FLOAT
temp
[
64
],
uint8_t
*
dest
,
ptrdiff_t
stride
,
int
x
,
int
y
,
int
type
)
{
int
i
;
FLOAT
s04
,
d04
,
s17
,
d17
,
s26
,
d26
,
s53
,
d53
;
FLOAT
os07
,
os16
,
os25
,
os34
;
...
...
@@ -135,7 +137,8 @@ void ff_faanidct(int16_t block[64]){
p8idct
(
block
,
temp
,
NULL
,
0
,
8
,
1
,
1
);
}
void
ff_faanidct_add
(
uint8_t
*
dest
,
int
line_size
,
int16_t
block
[
64
]){
void
ff_faanidct_add
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
block
[
64
])
{
FLOAT
temp
[
64
];
int
i
;
...
...
@@ -148,7 +151,8 @@ void ff_faanidct_add(uint8_t *dest, int line_size, int16_t block[64]){
p8idct
(
NULL
,
temp
,
dest
,
line_size
,
8
,
1
,
2
);
}
void
ff_faanidct_put
(
uint8_t
*
dest
,
int
line_size
,
int16_t
block
[
64
]){
void
ff_faanidct_put
(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
block
[
64
])
{
FLOAT
temp
[
64
];
int
i
;
...
...
libavcodec/faanidct.h
View file @
2ec9fa5e
...
...
@@ -22,10 +22,11 @@
#ifndef AVCODEC_FAANIDCT_H
#define AVCODEC_FAANIDCT_H
#include <stddef.h>
#include <stdint.h>
void
ff_faanidct
(
int16_t
block
[
64
]);
void
ff_faanidct_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
block
[
64
]);
void
ff_faanidct_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
block
[
64
]);
void
ff_faanidct_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
block
[
64
]);
void
ff_faanidct_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
block
[
64
]);
#endif
/* AVCODEC_FAANIDCT_H */
libavcodec/idctdsp.c
View file @
2ec9fa5e
...
...
@@ -79,11 +79,11 @@ av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation,
}
}
void
(
*
ff_put_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
void
(
*
ff_add_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
void
(
*
ff_put_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_
t
line_size
);
void
(
*
ff_add_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_
t
line_size
);
static
void
put_pixels_clamped_c
(
const
int16_t
*
block
,
uint8_t
*
restrict
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
int
i
;
...
...
@@ -105,7 +105,7 @@ static void put_pixels_clamped_c(const int16_t *block, uint8_t *restrict pixels,
static
void
put_signed_pixels_clamped_c
(
const
int16_t
*
block
,
uint8_t
*
restrict
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
int
i
,
j
;
...
...
@@ -125,7 +125,7 @@ static void put_signed_pixels_clamped_c(const int16_t *block,
}
static
void
add_pixels_clamped_c
(
const
int16_t
*
block
,
uint8_t
*
restrict
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
int
i
;
...
...
libavcodec/idctdsp.h
View file @
2ec9fa5e
...
...
@@ -52,13 +52,13 @@ typedef struct IDCTDSPContext {
/* pixel ops : interface with DCT */
void
(
*
put_pixels_clamped
)(
const
int16_t
*
block
/* align 16 */
,
uint8_t
*
pixels
/* align 8 */
,
in
t
line_size
);
ptrdiff_
t
line_size
);
void
(
*
put_signed_pixels_clamped
)(
const
int16_t
*
block
/* align 16 */
,
uint8_t
*
pixels
/* align 8 */
,
in
t
line_size
);
ptrdiff_
t
line_size
);
void
(
*
add_pixels_clamped
)(
const
int16_t
*
block
/* align 16 */
,
uint8_t
*
pixels
/* align 8 */
,
in
t
line_size
);
ptrdiff_
t
line_size
);
void
(
*
idct
)(
int16_t
*
block
/* align 16 */
);
...
...
@@ -68,14 +68,14 @@ typedef struct IDCTDSPContext {
* @param line_size size in bytes of a horizontal line of dest
*/
void
(
*
idct_put
)(
uint8_t
*
dest
/* align 8 */
,
in
t
line_size
,
int16_t
*
block
/* align 16 */
);
ptrdiff_
t
line_size
,
int16_t
*
block
/* align 16 */
);
/**
* block -> idct -> add dest -> clip to unsigned 8 bit -> dest.
* @param line_size size in bytes of a horizontal line of dest
*/
void
(
*
idct_add
)(
uint8_t
*
dest
/* align 8 */
,
in
t
line_size
,
int16_t
*
block
/* align 16 */
);
ptrdiff_
t
line_size
,
int16_t
*
block
/* align 16 */
);
/**
* IDCT input permutation.
...
...
@@ -95,8 +95,8 @@ typedef struct IDCTDSPContext {
enum
idct_permutation_type
perm_type
;
}
IDCTDSPContext
;
extern
void
(
*
ff_put_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
extern
void
(
*
ff_add_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
extern
void
(
*
ff_put_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_
t
line_size
);
extern
void
(
*
ff_add_pixels_clamped
)(
const
int16_t
*
block
,
uint8_t
*
pixels
,
ptrdiff_
t
line_size
);
void
ff_idctdsp_init
(
IDCTDSPContext
*
c
,
AVCodecContext
*
avctx
);
...
...
libavcodec/jrevdct.c
View file @
2ec9fa5e
...
...
@@ -943,13 +943,13 @@ void ff_j_rev_dct(DCTBLOCK data)
}
}
void
ff_jref_idct_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_jref_idct_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_j_rev_dct
(
block
);
ff_put_pixels_clamped
(
block
,
dest
,
line_size
);
}
void
ff_jref_idct_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_jref_idct_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_j_rev_dct
(
block
);
ff_add_pixels_clamped
(
block
,
dest
,
line_size
);
...
...
libavcodec/ppc/idctdsp.c
View file @
2ec9fa5e
...
...
@@ -153,7 +153,7 @@ static const vec_s16 constants[5] = {
{
19266
,
26722
,
25172
,
22654
,
19266
,
22654
,
25172
,
26722
}
};
static
void
idct_put_altivec
(
uint8_t
*
dest
,
in
t
stride
,
int16_t
*
blk
)
static
void
idct_put_altivec
(
uint8_t
*
dest
,
ptrdiff_
t
stride
,
int16_t
*
blk
)
{
vec_s16
*
block
=
(
vec_s16
*
)
blk
;
vec_u8
tmp
;
...
...
@@ -182,7 +182,7 @@ static void idct_put_altivec(uint8_t *dest, int stride, int16_t *blk)
COPY
(
dest
,
vx7
);
}
static
void
idct_add_altivec
(
uint8_t
*
dest
,
in
t
stride
,
int16_t
*
blk
)
static
void
idct_add_altivec
(
uint8_t
*
dest
,
ptrdiff_
t
stride
,
int16_t
*
blk
)
{
vec_s16
*
block
=
(
vec_s16
*
)
blk
;
vec_u8
tmp
;
...
...
libavcodec/ppc/vc1dsp_altivec.c
View file @
2ec9fa5e
...
...
@@ -229,7 +229,8 @@ static void vc1_inv_trans_8x8_altivec(int16_t block[64])
/** Do inverse transform on 8x4 part of block
*/
static
void
vc1_inv_trans_8x4_altivec
(
uint8_t
*
dest
,
int
stride
,
int16_t
*
block
)
static
void
vc1_inv_trans_8x4_altivec
(
uint8_t
*
dest
,
ptrdiff_t
stride
,
int16_t
*
block
)
{
vector
signed
short
src0
,
src1
,
src2
,
src3
,
src4
,
src5
,
src6
,
src7
;
vector
signed
int
s0
,
s1
,
s2
,
s3
,
s4
,
s5
,
s6
,
s7
;
...
...
libavcodec/simple_idct.c
View file @
2ec9fa5e
...
...
@@ -49,7 +49,7 @@
and the butterfly must be multiplied by 0.5 * sqrt(2.0) */
#define C_SHIFT (4+1+12)
static
inline
void
idct4col_put
(
uint8_t
*
dest
,
in
t
line_size
,
const
int16_t
*
col
)
static
inline
void
idct4col_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
const
int16_t
*
col
)
{
int
c0
,
c1
,
c2
,
c3
,
a0
,
a1
,
a2
,
a3
;
...
...
@@ -85,7 +85,7 @@ static inline void idct4col_put(uint8_t *dest, int line_size, const int16_t *col
/* XXX: I think a 1.0/sqrt(2) normalization should be needed to
compensate the extra butterfly stage - I don't have the full DV
specification */
void
ff_simple_idct248_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct248_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
int16_t
*
ptr
;
...
...
@@ -128,7 +128,7 @@ void ff_simple_idct248_put(uint8_t *dest, int line_size, int16_t *block)
#define C2 C_FIX(0.2705980501)
#define C3 C_FIX(0.5)
#define C_SHIFT (4+1+12)
static
inline
void
idct4col_add
(
uint8_t
*
dest
,
in
t
line_size
,
const
int16_t
*
col
)
static
inline
void
idct4col_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
const
int16_t
*
col
)
{
int
c0
,
c1
,
c2
,
c3
,
a0
,
a1
,
a2
,
a3
;
...
...
@@ -173,7 +173,7 @@ static inline void idct4row(int16_t *row)
row
[
3
]
=
(
c0
-
c1
)
>>
R_SHIFT
;
}
void
ff_simple_idct84_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct84_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
...
...
@@ -188,7 +188,7 @@ void ff_simple_idct84_add(uint8_t *dest, int line_size, int16_t *block)
}
}
void
ff_simple_idct48_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct48_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
...
...
@@ -203,7 +203,7 @@ void ff_simple_idct48_add(uint8_t *dest, int line_size, int16_t *block)
}
}
void
ff_simple_idct44_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct44_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
...
...
libavcodec/simple_idct.h
View file @
2ec9fa5e
...
...
@@ -28,14 +28,15 @@
#ifndef AVCODEC_SIMPLE_IDCT_H
#define AVCODEC_SIMPLE_IDCT_H
#include <stddef.h>
#include <stdint.h>
void
ff_simple_idct_put_8
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_add_8
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_put_8
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_add_8
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_8
(
int16_t
*
block
);
void
ff_simple_idct_put_10
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_add_10
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_put_10
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_add_10
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_10
(
int16_t
*
block
);
/**
* Special version of ff_simple_idct_10() which does dequantization
...
...
@@ -44,10 +45,10 @@ void ff_simple_idct_10(int16_t *block);
*/
void
ff_prores_idct
(
int16_t
*
block
,
const
int16_t
*
qmat
);
void
ff_simple_idct248_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct248_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct84_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct48_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct44_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct84_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct48_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct44_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
#endif
/* AVCODEC_SIMPLE_IDCT_H */
libavcodec/simple_idct_template.c
View file @
2ec9fa5e
...
...
@@ -222,7 +222,7 @@ static inline void FUNC(idctRowCondDC)(int16_t *row, int extra_shift)
} \
} while (0)
static
inline
void
FUNC
(
idctSparseColPut
)(
pixel
*
dest
,
in
t
line_size
,
static
inline
void
FUNC
(
idctSparseColPut
)(
pixel
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
col
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
...
...
@@ -246,7 +246,7 @@ static inline void FUNC(idctSparseColPut)(pixel *dest, int line_size,
dest
[
0
]
=
av_clip_pixel
((
a0
-
b0
)
>>
COL_SHIFT
);
}
static
inline
void
FUNC
(
idctSparseColAdd
)(
pixel
*
dest
,
in
t
line_size
,
static
inline
void
FUNC
(
idctSparseColAdd
)(
pixel
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
col
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
...
...
@@ -286,7 +286,7 @@ static inline void FUNC(idctSparseCol)(int16_t *col)
col
[
56
]
=
((
a0
-
b0
)
>>
COL_SHIFT
);
}
void
FUNC
(
ff_simple_idct_put
)(
uint8_t
*
dest_
,
in
t
line_size
,
int16_t
*
block
)
void
FUNC
(
ff_simple_idct_put
)(
uint8_t
*
dest_
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
pixel
*
dest
=
(
pixel
*
)
dest_
;
int
i
;
...
...
@@ -300,7 +300,7 @@ void FUNC(ff_simple_idct_put)(uint8_t *dest_, int line_size, int16_t *block)
FUNC
(
idctSparseColPut
)(
dest
+
i
,
line_size
,
block
+
i
);
}
void
FUNC
(
ff_simple_idct_add
)(
uint8_t
*
dest_
,
in
t
line_size
,
int16_t
*
block
)
void
FUNC
(
ff_simple_idct_add
)(
uint8_t
*
dest_
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
pixel
*
dest
=
(
pixel
*
)
dest_
;
int
i
;
...
...
libavcodec/tests/dct.c
View file @
2ec9fa5e
...
...
@@ -253,7 +253,7 @@ static int dct_error(const struct algo *dct, int test, int is_idct, int speed)
DECLARE_ALIGNED
(
8
,
static
uint8_t
,
img_dest
)[
64
];
DECLARE_ALIGNED
(
8
,
static
uint8_t
,
img_dest1
)[
64
];
static
void
idct248_ref
(
uint8_t
*
dest
,
in
t
linesize
,
int16_t
*
block
)
static
void
idct248_ref
(
uint8_t
*
dest
,
ptrdiff_
t
linesize
,
int16_t
*
block
)
{
static
int
init
;
static
double
c8
[
8
][
8
];
...
...
@@ -334,7 +334,8 @@ static void idct248_ref(uint8_t *dest, int linesize, int16_t *block)
}
static
void
idct248_error
(
const
char
*
name
,
void
(
*
idct248_put
)(
uint8_t
*
dest
,
int
line_size
,
void
(
*
idct248_put
)(
uint8_t
*
dest
,
ptrdiff_t
line_size
,
int16_t
*
block
),
int
speed
)
{
...
...
libavcodec/vc1dsp.c
View file @
2ec9fa5e
...
...
@@ -235,7 +235,7 @@ static void vc1_h_loop_filter16_c(uint8_t *src, int stride, int pq)
}
/* Do inverse transform on 8x8 block */
static
void
vc1_inv_trans_8x8_dc_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_8x8_dc_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
int
dc
=
block
[
0
];
...
...
@@ -252,7 +252,7 @@ static void vc1_inv_trans_8x8_dc_c(uint8_t *dest, int linesize, int16_t *block)
dest
[
5
]
=
av_clip_uint8
(
dest
[
5
]
+
dc
);
dest
[
6
]
=
av_clip_uint8
(
dest
[
6
]
+
dc
);
dest
[
7
]
=
av_clip_uint8
(
dest
[
7
]
+
dc
);
dest
+=
linesiz
e
;
dest
+=
strid
e
;
}
}
...
...
@@ -326,7 +326,7 @@ static void vc1_inv_trans_8x8_c(int16_t block[64])
}
/* Do inverse transform on 8x4 part of block */
static
void
vc1_inv_trans_8x4_dc_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_8x4_dc_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
int
dc
=
block
[
0
];
...
...
@@ -343,11 +343,11 @@ static void vc1_inv_trans_8x4_dc_c(uint8_t *dest, int linesize, int16_t *block)
dest
[
5
]
=
av_clip_uint8
(
dest
[
5
]
+
dc
);
dest
[
6
]
=
av_clip_uint8
(
dest
[
6
]
+
dc
);
dest
[
7
]
=
av_clip_uint8
(
dest
[
7
]
+
dc
);
dest
+=
linesiz
e
;
dest
+=
strid
e
;
}
}
static
void
vc1_inv_trans_8x4_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_8x4_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
register
int
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
,
t8
;
...
...
@@ -392,10 +392,10 @@ static void vc1_inv_trans_8x4_c(uint8_t *dest, int linesize, int16_t *block)
t3
=
22
*
src
[
8
]
+
10
*
src
[
24
];
t4
=
22
*
src
[
24
]
-
10
*
src
[
8
];
dest
[
0
*
linesize
]
=
av_clip_uint8
(
dest
[
0
*
linesiz
e
]
+
((
t1
+
t3
)
>>
7
));
dest
[
1
*
linesize
]
=
av_clip_uint8
(
dest
[
1
*
linesiz
e
]
+
((
t2
-
t4
)
>>
7
));
dest
[
2
*
linesize
]
=
av_clip_uint8
(
dest
[
2
*
linesiz
e
]
+
((
t2
+
t4
)
>>
7
));
dest
[
3
*
linesize
]
=
av_clip_uint8
(
dest
[
3
*
linesiz
e
]
+
((
t1
-
t3
)
>>
7
));
dest
[
0
*
stride
]
=
av_clip_uint8
(
dest
[
0
*
strid
e
]
+
((
t1
+
t3
)
>>
7
));
dest
[
1
*
stride
]
=
av_clip_uint8
(
dest
[
1
*
strid
e
]
+
((
t2
-
t4
)
>>
7
));
dest
[
2
*
stride
]
=
av_clip_uint8
(
dest
[
2
*
strid
e
]
+
((
t2
+
t4
)
>>
7
));
dest
[
3
*
stride
]
=
av_clip_uint8
(
dest
[
3
*
strid
e
]
+
((
t1
-
t3
)
>>
7
));
src
++
;
dest
++
;
...
...
@@ -403,7 +403,7 @@ static void vc1_inv_trans_8x4_c(uint8_t *dest, int linesize, int16_t *block)
}
/* Do inverse transform on 4x8 parts of block */
static
void
vc1_inv_trans_4x8_dc_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_4x8_dc_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
int
dc
=
block
[
0
];
...
...
@@ -416,11 +416,11 @@ static void vc1_inv_trans_4x8_dc_c(uint8_t *dest, int linesize, int16_t *block)
dest
[
1
]
=
av_clip_uint8
(
dest
[
1
]
+
dc
);
dest
[
2
]
=
av_clip_uint8
(
dest
[
2
]
+
dc
);
dest
[
3
]
=
av_clip_uint8
(
dest
[
3
]
+
dc
);
dest
+=
linesiz
e
;
dest
+=
strid
e
;
}
}
static
void
vc1_inv_trans_4x8_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_4x8_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
register
int
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
t7
,
t8
;
...
...
@@ -461,14 +461,14 @@ static void vc1_inv_trans_4x8_c(uint8_t *dest, int linesize, int16_t *block)
t3
=
9
*
src
[
8
]
-
16
*
src
[
24
]
+
4
*
src
[
40
]
+
15
*
src
[
56
];
t4
=
4
*
src
[
8
]
-
9
*
src
[
24
]
+
15
*
src
[
40
]
-
16
*
src
[
56
];
dest
[
0
*
linesize
]
=
av_clip_uint8
(
dest
[
0
*
linesiz
e
]
+
((
t5
+
t1
)
>>
7
));
dest
[
1
*
linesize
]
=
av_clip_uint8
(
dest
[
1
*
linesiz
e
]
+
((
t6
+
t2
)
>>
7
));
dest
[
2
*
linesize
]
=
av_clip_uint8
(
dest
[
2
*
linesiz
e
]
+
((
t7
+
t3
)
>>
7
));
dest
[
3
*
linesize
]
=
av_clip_uint8
(
dest
[
3
*
linesiz
e
]
+
((
t8
+
t4
)
>>
7
));
dest
[
4
*
linesize
]
=
av_clip_uint8
(
dest
[
4
*
linesiz
e
]
+
((
t8
-
t4
+
1
)
>>
7
));
dest
[
5
*
linesize
]
=
av_clip_uint8
(
dest
[
5
*
linesiz
e
]
+
((
t7
-
t3
+
1
)
>>
7
));
dest
[
6
*
linesize
]
=
av_clip_uint8
(
dest
[
6
*
linesiz
e
]
+
((
t6
-
t2
+
1
)
>>
7
));
dest
[
7
*
linesize
]
=
av_clip_uint8
(
dest
[
7
*
linesiz
e
]
+
((
t5
-
t1
+
1
)
>>
7
));
dest
[
0
*
stride
]
=
av_clip_uint8
(
dest
[
0
*
strid
e
]
+
((
t5
+
t1
)
>>
7
));
dest
[
1
*
stride
]
=
av_clip_uint8
(
dest
[
1
*
strid
e
]
+
((
t6
+
t2
)
>>
7
));
dest
[
2
*
stride
]
=
av_clip_uint8
(
dest
[
2
*
strid
e
]
+
((
t7
+
t3
)
>>
7
));
dest
[
3
*
stride
]
=
av_clip_uint8
(
dest
[
3
*
strid
e
]
+
((
t8
+
t4
)
>>
7
));
dest
[
4
*
stride
]
=
av_clip_uint8
(
dest
[
4
*
strid
e
]
+
((
t8
-
t4
+
1
)
>>
7
));
dest
[
5
*
stride
]
=
av_clip_uint8
(
dest
[
5
*
strid
e
]
+
((
t7
-
t3
+
1
)
>>
7
));
dest
[
6
*
stride
]
=
av_clip_uint8
(
dest
[
6
*
strid
e
]
+
((
t6
-
t2
+
1
)
>>
7
));
dest
[
7
*
stride
]
=
av_clip_uint8
(
dest
[
7
*
strid
e
]
+
((
t5
-
t1
+
1
)
>>
7
));
src
++
;
dest
++
;
...
...
@@ -476,7 +476,7 @@ static void vc1_inv_trans_4x8_c(uint8_t *dest, int linesize, int16_t *block)
}
/* Do inverse transform on 4x4 part of block */
static
void
vc1_inv_trans_4x4_dc_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_4x4_dc_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
int
dc
=
block
[
0
];
...
...
@@ -489,11 +489,11 @@ static void vc1_inv_trans_4x4_dc_c(uint8_t *dest, int linesize, int16_t *block)
dest
[
1
]
=
av_clip_uint8
(
dest
[
1
]
+
dc
);
dest
[
2
]
=
av_clip_uint8
(
dest
[
2
]
+
dc
);
dest
[
3
]
=
av_clip_uint8
(
dest
[
3
]
+
dc
);
dest
+=
linesiz
e
;
dest
+=
strid
e
;
}
}
static
void
vc1_inv_trans_4x4_c
(
uint8_t
*
dest
,
int
linesiz
e
,
int16_t
*
block
)
static
void
vc1_inv_trans_4x4_c
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
i
;
register
int
t1
,
t2
,
t3
,
t4
;
...
...
@@ -523,10 +523,10 @@ static void vc1_inv_trans_4x4_c(uint8_t *dest, int linesize, int16_t *block)
t3
=
22
*
src
[
8
]
+
10
*
src
[
24
];
t4
=
22
*
src
[
24
]
-
10
*
src
[
8
];
dest
[
0
*
linesize
]
=
av_clip_uint8
(
dest
[
0
*
linesiz
e
]
+
((
t1
+
t3
)
>>
7
));
dest
[
1
*
linesize
]
=
av_clip_uint8
(
dest
[
1
*
linesiz
e
]
+
((
t2
-
t4
)
>>
7
));
dest
[
2
*
linesize
]
=
av_clip_uint8
(
dest
[
2
*
linesiz
e
]
+
((
t2
+
t4
)
>>
7
));
dest
[
3
*
linesize
]
=
av_clip_uint8
(
dest
[
3
*
linesiz
e
]
+
((
t1
-
t3
)
>>
7
));
dest
[
0
*
stride
]
=
av_clip_uint8
(
dest
[
0
*
strid
e
]
+
((
t1
+
t3
)
>>
7
));
dest
[
1
*
stride
]
=
av_clip_uint8
(
dest
[
1
*
strid
e
]
+
((
t2
-
t4
)
>>
7
));
dest
[
2
*
stride
]
=
av_clip_uint8
(
dest
[
2
*
strid
e
]
+
((
t2
+
t4
)
>>
7
));
dest
[
3
*
stride
]
=
av_clip_uint8
(
dest
[
3
*
strid
e
]
+
((
t1
-
t3
)
>>
7
));
src
++
;
dest
++
;
...
...
libavcodec/vc1dsp.h
View file @
2ec9fa5e
...
...
@@ -33,13 +33,13 @@
typedef
struct
VC1DSPContext
{
/* vc1 functions */
void
(
*
vc1_inv_trans_8x8
)(
int16_t
*
b
);
void
(
*
vc1_inv_trans_8x4
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x8
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x4
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_8x8_dc
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_8x4_dc
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x8_dc
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x4_dc
)(
uint8_t
*
dest
,
int
line_siz
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_8x4
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x8
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x4
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_8x8_dc
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_8x4_dc
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x8_dc
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_inv_trans_4x4_dc
)(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
);
void
(
*
vc1_v_overlap
)(
uint8_t
*
src
,
int
stride
);
void
(
*
vc1_h_overlap
)(
uint8_t
*
src
,
int
stride
);
void
(
*
vc1_v_s_overlap
)(
int16_t
*
top
,
int16_t
*
bottom
);
...
...
libavcodec/wmv2dsp.c
View file @
2ec9fa5e
...
...
@@ -93,7 +93,7 @@ static void wmv2_idct_col(short * b)
b
[
8
*
7
]
=
(
a0
+
a2
-
a1
-
a5
+
(
1
<<
13
))
>>
14
;
}
static
void
wmv2_idct_add_c
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
static
void
wmv2_idct_add_c
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
...
...
@@ -116,7 +116,7 @@ static void wmv2_idct_add_c(uint8_t *dest, int line_size, int16_t *block)
}
}
static
void
wmv2_idct_put_c
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
static
void
wmv2_idct_put_c
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
int
i
;
...
...
libavcodec/wmv2dsp.h
View file @
2ec9fa5e
...
...
@@ -24,8 +24,8 @@
#include "qpeldsp.h"
typedef
struct
WMV2DSPContext
{
void
(
*
idct_add
)(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
(
*
idct_put
)(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
(
*
idct_add
)(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
(
*
idct_put
)(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
qpel_mc_func
put_mspel_pixels_tab
[
8
];
...
...
libavcodec/x86/idctdsp.h
View file @
2ec9fa5e
...
...
@@ -19,13 +19,14 @@
#ifndef AVCODEC_X86_IDCTDSP_H
#define AVCODEC_X86_IDCTDSP_H
#include <stddef.h>
#include <stdint.h>
void
ff_add_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
ptrdiff_
t
line_size
);
void
ff_put_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
ptrdiff_
t
line_size
);
void
ff_put_signed_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
);
ptrdiff_
t
line_size
);
#endif
/* AVCODEC_X86_IDCTDSP_H */
libavcodec/x86/idctdsp_mmx.c
View file @
2ec9fa5e
...
...
@@ -31,7 +31,7 @@
#if HAVE_INLINE_ASM
void
ff_put_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
const
int16_t
*
p
;
uint8_t
*
pix
;
...
...
@@ -107,7 +107,7 @@ void ff_put_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
"movq %%mm4, (%0, %1) \n\t"
void
ff_put_signed_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
x86_reg
line_skip
=
line_size
;
x86_reg
line_skip3
;
...
...
@@ -124,7 +124,7 @@ void ff_put_signed_pixels_clamped_mmx(const int16_t *block, uint8_t *pixels,
}
void
ff_add_pixels_clamped_mmx
(
const
int16_t
*
block
,
uint8_t
*
pixels
,
in
t
line_size
)
ptrdiff_
t
line_size
)
{
const
int16_t
*
p
;
uint8_t
*
pix
;
...
...
libavcodec/x86/simple_idct.c
View file @
2ec9fa5e
...
...
@@ -904,12 +904,12 @@ void ff_simple_idct_mmx(int16_t *block)
//FIXME merge add/put into the idct
void
ff_simple_idct_put_mmx
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct_put_mmx
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
idct
(
block
);
ff_put_pixels_clamped
(
block
,
dest
,
line_size
);
}
void
ff_simple_idct_add_mmx
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_simple_idct_add_mmx
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
idct
(
block
);
ff_add_pixels_clamped
(
block
,
dest
,
line_size
);
...
...
libavcodec/x86/simple_idct.h
View file @
2ec9fa5e
...
...
@@ -19,10 +19,11 @@
#ifndef AVCODEC_X86_SIMPLE_IDCT_H
#define AVCODEC_X86_SIMPLE_IDCT_H
#include <stddef.h>
#include <stdint.h>
void
ff_simple_idct_mmx
(
int16_t
*
block
);
void
ff_simple_idct_add_mmx
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_put_mmx
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_add_mmx
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_simple_idct_put_mmx
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
#endif
/* AVCODEC_X86_SIMPLE_IDCT_H */
libavcodec/x86/vc1dsp_mmx.c
View file @
2ec9fa5e
...
...
@@ -498,7 +498,7 @@ DECLARE_FUNCTION(3, 1)
DECLARE_FUNCTION
(
3
,
2
)
DECLARE_FUNCTION
(
3
,
3
)
static
void
vc1_inv_trans_4x4_dc_mmxext
(
uint8_t
*
dest
,
int
linesiz
e
,
static
void
vc1_inv_trans_4x4_dc_mmxext
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
dc
=
block
[
0
];
...
...
@@ -530,14 +530,14 @@ static void vc1_inv_trans_4x4_dc_mmxext(uint8_t *dest, int linesize,
"movd %%mm3, %1
\n\t
"
"movd %%mm4, %2
\n\t
"
"movd %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
}
static
void
vc1_inv_trans_4x8_dc_mmxext
(
uint8_t
*
dest
,
int
linesiz
e
,
static
void
vc1_inv_trans_4x8_dc_mmxext
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
dc
=
block
[
0
];
...
...
@@ -569,12 +569,12 @@ static void vc1_inv_trans_4x8_dc_mmxext(uint8_t *dest, int linesize,
"movd %%mm3, %1
\n\t
"
"movd %%mm4, %2
\n\t
"
"movd %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
dest
+=
4
*
linesiz
e
;
dest
+=
4
*
strid
e
;
__asm__
volatile
(
"movd %0, %%mm2
\n\t
"
"movd %1, %%mm3
\n\t
"
...
...
@@ -592,14 +592,14 @@ static void vc1_inv_trans_4x8_dc_mmxext(uint8_t *dest, int linesize,
"movd %%mm3, %1
\n\t
"
"movd %%mm4, %2
\n\t
"
"movd %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
}
static
void
vc1_inv_trans_8x4_dc_mmxext
(
uint8_t
*
dest
,
int
linesiz
e
,
static
void
vc1_inv_trans_8x4_dc_mmxext
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
dc
=
block
[
0
];
...
...
@@ -631,14 +631,14 @@ static void vc1_inv_trans_8x4_dc_mmxext(uint8_t *dest, int linesize,
"movq %%mm3, %1
\n\t
"
"movq %%mm4, %2
\n\t
"
"movq %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
}
static
void
vc1_inv_trans_8x8_dc_mmxext
(
uint8_t
*
dest
,
int
linesiz
e
,
static
void
vc1_inv_trans_8x8_dc_mmxext
(
uint8_t
*
dest
,
ptrdiff_t
strid
e
,
int16_t
*
block
)
{
int
dc
=
block
[
0
];
...
...
@@ -670,12 +670,12 @@ static void vc1_inv_trans_8x8_dc_mmxext(uint8_t *dest, int linesize,
"movq %%mm3, %1
\n\t
"
"movq %%mm4, %2
\n\t
"
"movq %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
dest
+=
4
*
linesiz
e
;
dest
+=
4
*
strid
e
;
__asm__
volatile
(
"movq %0, %%mm2
\n\t
"
"movq %1, %%mm3
\n\t
"
...
...
@@ -693,10 +693,10 @@ static void vc1_inv_trans_8x8_dc_mmxext(uint8_t *dest, int linesize,
"movq %%mm3, %1
\n\t
"
"movq %%mm4, %2
\n\t
"
"movq %%mm5, %3
\n\t
"
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
linesiz
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
linesiz
e
))
:
"+m"
(
*
(
uint32_t
*
)(
dest
+
0
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
1
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
2
*
strid
e
)),
"+m"
(
*
(
uint32_t
*
)(
dest
+
3
*
strid
e
))
);
}
...
...
libavcodec/x86/xvididct.h
View file @
2ec9fa5e
...
...
@@ -26,18 +26,19 @@
#ifndef AVCODEC_X86_XVIDIDCT_H
#define AVCODEC_X86_XVIDIDCT_H
#include <stddef.h>
#include <stdint.h>
void
ff_xvid_idct_mmx
(
short
*
block
);
void
ff_xvid_idct_mmx_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmx_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmx_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmx_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmxext
(
short
*
block
);
void
ff_xvid_idct_mmxext_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmxext_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmxext_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_mmxext_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
);
void
ff_xvid_idct_sse2
(
short
*
block
);
void
ff_xvid_idct_sse2_put
(
uint8_t
*
dest
,
in
t
line_size
,
short
*
block
);
void
ff_xvid_idct_sse2_add
(
uint8_t
*
dest
,
in
t
line_size
,
short
*
block
);
void
ff_xvid_idct_sse2_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
short
*
block
);
void
ff_xvid_idct_sse2_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
short
*
block
);
#endif
/* AVCODEC_X86_XVIDIDCT_H */
libavcodec/x86/xvididct_mmx.c
View file @
2ec9fa5e
...
...
@@ -494,13 +494,13 @@ void ff_xvid_idct_mmx(short *block)
::
"r"
(
block
),
"r"
(
rounder_0
),
"r"
(
tab_i_04_mmx
),
"r"
(
tg_1_16
));
}
void
ff_xvid_idct_mmx_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_xvid_idct_mmx_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct_mmx
(
block
);
ff_put_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
}
void
ff_xvid_idct_mmx_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_xvid_idct_mmx_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct_mmx
(
block
);
ff_add_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
...
...
@@ -533,13 +533,13 @@ void ff_xvid_idct_mmxext(short *block)
::
"r"
(
block
),
"r"
(
rounder_0
),
"r"
(
tab_i_04_xmm
),
"r"
(
tg_1_16
));
}
void
ff_xvid_idct_mmxext_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_xvid_idct_mmxext_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct_mmxext
(
block
);
ff_put_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
}
void
ff_xvid_idct_mmxext_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
void
ff_xvid_idct_mmxext_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct_mmxext
(
block
);
ff_add_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
...
...
libavcodec/x86/xvididct_sse2.c
View file @
2ec9fa5e
...
...
@@ -390,13 +390,13 @@ inline void ff_xvid_idct_sse2(short *block)
"%eax"
,
"%ecx"
,
"%edx"
,
"%esi"
,
"memory"
);
}
void
ff_xvid_idct_sse2_put
(
uint8_t
*
dest
,
in
t
line_size
,
short
*
block
)
void
ff_xvid_idct_sse2_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
short
*
block
)
{
ff_xvid_idct_sse2
(
block
);
ff_put_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
}
void
ff_xvid_idct_sse2_add
(
uint8_t
*
dest
,
in
t
line_size
,
short
*
block
)
void
ff_xvid_idct_sse2_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
short
*
block
)
{
ff_xvid_idct_sse2
(
block
);
ff_add_pixels_clamped_mmx
(
block
,
dest
,
line_size
);
...
...
libavcodec/xvididct.c
View file @
2ec9fa5e
...
...
@@ -318,13 +318,13 @@ void ff_xvid_idct(int16_t *const in)
}
}
static
void
xvid_idct_put
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
static
void
xvid_idct_put
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct
(
block
);
ff_put_pixels_clamped
(
block
,
dest
,
line_size
);
}
static
void
xvid_idct_add
(
uint8_t
*
dest
,
in
t
line_size
,
int16_t
*
block
)
static
void
xvid_idct_add
(
uint8_t
*
dest
,
ptrdiff_
t
line_size
,
int16_t
*
block
)
{
ff_xvid_idct
(
block
);
ff_add_pixels_clamped
(
block
,
dest
,
line_size
);
...
...
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