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
0e15384d
Commit
0e15384d
authored
Jan 15, 2003
by
Michael Niedermayer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixing DCTELEM != short
Originally committed as revision 1462 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
3a87ac94
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
65 additions
and
50 deletions
+65
-50
dsputil.c
libavcodec/dsputil.c
+1
-1
dsputil.h
libavcodec/dsputil.h
+2
-1
dv.c
libavcodec/dv.c
+1
-1
h263.c
libavcodec/h263.c
+4
-4
mpegvideo.h
libavcodec/mpegvideo.h
+1
-1
simple_idct.c
libavcodec/simple_idct.c
+47
-33
simple_idct.h
libavcodec/simple_idct.h
+9
-9
No files found.
libavcodec/dsputil.c
View file @
0e15384d
...
...
@@ -1822,7 +1822,7 @@ static int dct_sad8x8_c(/*MpegEncContext*/ void *c, uint8_t *src1, uint8_t *src2
return
sum
;
}
void
simple_idct
(
INT16
*
block
);
//FIXME
void
simple_idct
(
DCTELEM
*
block
);
//FIXME
static
int
quant_psnr8x8_c
(
/*MpegEncContext*/
void
*
c
,
uint8_t
*
src1
,
uint8_t
*
src2
,
int
stride
){
MpegEncContext
*
const
s
=
(
MpegEncContext
*
)
c
;
...
...
libavcodec/dsputil.h
View file @
0e15384d
...
...
@@ -25,6 +25,7 @@
//#define DEBUG
/* dct code */
typedef
short
DCTELEM
;
//typedef int DCTELEM;
void
fdct_ifast
(
DCTELEM
*
data
);
void
ff_jpeg_fdct_islow
(
DCTELEM
*
data
);
...
...
@@ -156,7 +157,7 @@ void dsputil_init(DSPContext* p, unsigned mask);
* permute block according to permuatation.
* @param last last non zero element in scantable order
*/
void
ff_block_permute
(
INT16
*
block
,
UINT8
*
permutation
,
const
UINT8
*
scantable
,
int
last
);
void
ff_block_permute
(
DCTELEM
*
block
,
UINT8
*
permutation
,
const
UINT8
*
scantable
,
int
last
);
#define emms_c()
...
...
libavcodec/dv.c
View file @
0e15384d
...
...
@@ -157,7 +157,7 @@ static const UINT16 block_sizes[6] = {
/* decode ac coefs */
static
void
dv_decode_ac
(
DVVideoDecodeContext
*
s
,
BlockInfo
*
mb
,
INT16
*
block
,
int
last_index
)
BlockInfo
*
mb
,
DCTELEM
*
block
,
int
last_index
)
{
int
last_re_index
;
int
shift_offset
=
mb
->
shift_offset
;
...
...
libavcodec/h263.c
View file @
0e15384d
...
...
@@ -67,7 +67,7 @@ static inline int mpeg4_decode_dc(MpegEncContext * s, int n, int *dir_ptr);
static
inline
int
mpeg4_decode_block
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
coded
,
int
intra
);
static
int
h263_pred_dc
(
MpegEncContext
*
s
,
int
n
,
UINT16
**
dc_val_ptr
);
static
void
mpeg4_inv_pred_ac
(
MpegEncContext
*
s
,
INT16
*
block
,
int
n
,
static
void
mpeg4_inv_pred_ac
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
dir
);
static
void
mpeg4_decode_sprite_trajectory
(
MpegEncContext
*
s
);
static
inline
int
ff_mpeg4_pred_dc
(
MpegEncContext
*
s
,
int
n
,
UINT16
**
dc_val_ptr
,
int
*
dir_ptr
);
...
...
@@ -999,7 +999,7 @@ static int h263_pred_dc(MpegEncContext * s, int n, UINT16 **dc_val_ptr)
}
void
h263_pred_acdc
(
MpegEncContext
*
s
,
INT16
*
block
,
int
n
)
void
h263_pred_acdc
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
)
{
int
x
,
y
,
wrap
,
a
,
c
,
pred_dc
,
scale
,
i
;
INT16
*
dc_val
,
*
ac_val
,
*
ac_val1
;
...
...
@@ -1852,7 +1852,7 @@ static inline int ff_mpeg4_pred_dc(MpegEncContext * s, int n, UINT16 **dc_val_pt
return
pred
;
}
void
mpeg4_pred_ac
(
MpegEncContext
*
s
,
INT16
*
block
,
int
n
,
void
mpeg4_pred_ac
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
dir
)
{
int
i
;
...
...
@@ -1907,7 +1907,7 @@ void mpeg4_pred_ac(MpegEncContext * s, INT16 *block, int n,
}
static
void
mpeg4_inv_pred_ac
(
MpegEncContext
*
s
,
INT16
*
block
,
int
n
,
static
void
mpeg4_inv_pred_ac
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
dir
)
{
int
i
;
...
...
libavcodec/mpegvideo.h
View file @
0e15384d
...
...
@@ -692,7 +692,7 @@ void h263_encode_picture_header(MpegEncContext *s, int picture_number);
int
h263_encode_gob_header
(
MpegEncContext
*
s
,
int
mb_line
);
INT16
*
h263_pred_motion
(
MpegEncContext
*
s
,
int
block
,
int
*
px
,
int
*
py
);
void
mpeg4_pred_ac
(
MpegEncContext
*
s
,
INT16
*
block
,
int
n
,
void
mpeg4_pred_ac
(
MpegEncContext
*
s
,
DCTELEM
*
block
,
int
n
,
int
dir
);
void
ff_set_mpeg4_time
(
MpegEncContext
*
s
,
int
picture_number
);
void
mpeg4_encode_picture_header
(
MpegEncContext
*
s
,
int
picture_number
);
...
...
libavcodec/simple_idct.c
View file @
0e15384d
...
...
@@ -67,7 +67,7 @@
#endif
static
inline
void
idctRowCondDC
(
int16_t
*
row
)
static
inline
void
idctRowCondDC
(
DCTELEM
*
row
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
#ifdef FAST_64BIT
...
...
@@ -82,26 +82,40 @@ static inline void idctRowCondDC (int16_t * row)
#else
#define ROW0_MASK 0xffffLL
#endif
if
(
((((
uint64_t
*
)
row
)[
0
]
&
~
ROW0_MASK
)
|
((
uint64_t
*
)
row
)[
1
])
==
0
)
{
temp
=
(
row
[
0
]
<<
3
)
&
0xffff
;
temp
+=
temp
<<
16
;
temp
+=
temp
<<
32
;
((
uint64_t
*
)
row
)[
0
]
=
temp
;
((
uint64_t
*
)
row
)[
1
]
=
temp
;
return
;
}
if
(
sizeof
(
DCTELEM
)
==
2
){
if
(
((((
uint64_t
*
)
row
)[
0
]
&
~
ROW0_MASK
)
|
((
uint64_t
*
)
row
)[
1
])
==
0
)
{
temp
=
(
row
[
0
]
<<
3
)
&
0xffff
;
temp
+=
temp
<<
16
;
temp
+=
temp
<<
32
;
((
uint64_t
*
)
row
)[
0
]
=
temp
;
((
uint64_t
*
)
row
)[
1
]
=
temp
;
return
;
}
}
else
{
if
(
!
(
row
[
1
]
|
row
[
2
]
|
row
[
3
]
|
row
[
4
]
|
row
[
5
]
|
row
[
6
]
|
row
[
7
]))
{
row
[
0
]
=
row
[
1
]
=
row
[
2
]
=
row
[
3
]
=
row
[
4
]
=
row
[
5
]
=
row
[
6
]
=
row
[
7
]
=
row
[
0
]
<<
3
;
return
;
}
}
#else
if
(
!
(((
uint32_t
*
)
row
)[
1
]
|
((
uint32_t
*
)
row
)[
2
]
|
((
uint32_t
*
)
row
)[
3
]
|
row
[
1
]))
{
temp
=
(
row
[
0
]
<<
3
)
&
0xffff
;
temp
+=
temp
<<
16
;
((
uint32_t
*
)
row
)[
0
]
=
((
uint32_t
*
)
row
)[
1
]
=
((
uint32_t
*
)
row
)[
2
]
=
((
uint32_t
*
)
row
)[
3
]
=
temp
;
return
;
}
if
(
sizeof
(
DCTELEM
)
==
2
){
if
(
!
(((
uint32_t
*
)
row
)[
1
]
|
((
uint32_t
*
)
row
)[
2
]
|
((
uint32_t
*
)
row
)[
3
]
|
row
[
1
]))
{
temp
=
(
row
[
0
]
<<
3
)
&
0xffff
;
temp
+=
temp
<<
16
;
((
uint32_t
*
)
row
)[
0
]
=
((
uint32_t
*
)
row
)[
1
]
=
((
uint32_t
*
)
row
)[
2
]
=
((
uint32_t
*
)
row
)[
3
]
=
temp
;
return
;
}
}
else
{
if
(
!
(
row
[
1
]
|
row
[
2
]
|
row
[
3
]
|
row
[
4
]
|
row
[
5
]
|
row
[
6
]
|
row
[
7
]))
{
row
[
0
]
=
row
[
1
]
=
row
[
2
]
=
row
[
3
]
=
row
[
4
]
=
row
[
5
]
=
row
[
6
]
=
row
[
7
]
=
row
[
0
]
<<
3
;
return
;
}
}
#endif
a0
=
(
W4
*
row
[
0
])
+
(
1
<<
(
ROW_SHIFT
-
1
));
...
...
@@ -159,7 +173,7 @@ static inline void idctRowCondDC (int16_t * row)
}
static
inline
void
idctSparseColPut
(
UINT8
*
dest
,
int
line_size
,
int16_t
*
col
)
DCTELEM
*
col
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
UINT8
*
cm
=
cropTbl
+
MAX_NEG_CROP
;
...
...
@@ -231,7 +245,7 @@ static inline void idctSparseColPut (UINT8 *dest, int line_size,
}
static
inline
void
idctSparseColAdd
(
UINT8
*
dest
,
int
line_size
,
int16_t
*
col
)
DCTELEM
*
col
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
UINT8
*
cm
=
cropTbl
+
MAX_NEG_CROP
;
...
...
@@ -302,7 +316,7 @@ static inline void idctSparseColAdd (UINT8 *dest, int line_size,
dest
[
0
]
=
cm
[
dest
[
0
]
+
((
a0
-
b0
)
>>
COL_SHIFT
)];
}
static
inline
void
idctSparseCol
(
int16_t
*
col
)
static
inline
void
idctSparseCol
(
DCTELEM
*
col
)
{
int
a0
,
a1
,
a2
,
a3
,
b0
,
b1
,
b2
,
b3
;
...
...
@@ -365,7 +379,7 @@ static inline void idctSparseCol (int16_t * col)
col
[
56
]
=
((
a0
-
b0
)
>>
COL_SHIFT
);
}
void
simple_idct_put
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
)
void
simple_idct_put
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
)
{
int
i
;
for
(
i
=
0
;
i
<
8
;
i
++
)
...
...
@@ -375,7 +389,7 @@ void simple_idct_put(UINT8 *dest, int line_size, INT16 *block)
idctSparseColPut
(
dest
+
i
,
line_size
,
block
+
i
);
}
void
simple_idct_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
)
void
simple_idct_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
)
{
int
i
;
for
(
i
=
0
;
i
<
8
;
i
++
)
...
...
@@ -385,7 +399,7 @@ void simple_idct_add(UINT8 *dest, int line_size, INT16 *block)
idctSparseColAdd
(
dest
+
i
,
line_size
,
block
+
i
);
}
void
simple_idct
(
INT16
*
block
)
void
simple_idct
(
DCTELEM
*
block
)
{
int
i
;
for
(
i
=
0
;
i
<
8
;
i
++
)
...
...
@@ -406,7 +420,7 @@ void simple_idct(INT16 *block)
and the butterfly must be multiplied by 0.5 * sqrt(2.0) */
#define C_SHIFT (4+1+12)
static
inline
void
idct4col
(
UINT8
*
dest
,
int
line_size
,
const
INT16
*
col
)
static
inline
void
idct4col
(
UINT8
*
dest
,
int
line_size
,
const
DCTELEM
*
col
)
{
int
c0
,
c1
,
c2
,
c3
,
a0
,
a1
,
a2
,
a3
;
const
UINT8
*
cm
=
cropTbl
+
MAX_NEG_CROP
;
...
...
@@ -443,10 +457,10 @@ static inline void idct4col(UINT8 *dest, int line_size, const INT16 *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
simple_idct248_put
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
)
void
simple_idct248_put
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
)
{
int
i
;
INT16
*
ptr
;
DCTELEM
*
ptr
;
/* butterfly */
ptr
=
block
;
...
...
@@ -486,7 +500,7 @@ void simple_idct248_put(UINT8 *dest, int line_size, INT16 *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
*
dest
,
int
line_size
,
const
INT16
*
col
)
static
inline
void
idct4col_add
(
UINT8
*
dest
,
int
line_size
,
const
DCTELEM
*
col
)
{
int
c0
,
c1
,
c2
,
c3
,
a0
,
a1
,
a2
,
a3
;
const
UINT8
*
cm
=
cropTbl
+
MAX_NEG_CROP
;
...
...
@@ -514,7 +528,7 @@ static inline void idct4col_add(UINT8 *dest, int line_size, const INT16 *col)
#define R2 R_FIX(0.2705980501)
#define R3 R_FIX(0.5)
#define R_SHIFT 11
static
inline
void
idct4row
(
INT16
*
row
)
static
inline
void
idct4row
(
DCTELEM
*
row
)
{
int
c0
,
c1
,
c2
,
c3
,
a0
,
a1
,
a2
,
a3
;
const
UINT8
*
cm
=
cropTbl
+
MAX_NEG_CROP
;
...
...
@@ -533,7 +547,7 @@ static inline void idct4row(INT16 *row)
row
[
3
]
=
(
c0
-
c1
)
>>
R_SHIFT
;
}
void
simple_idct84_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
)
void
simple_idct84_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
)
{
int
i
;
...
...
@@ -548,7 +562,7 @@ void simple_idct84_add(UINT8 *dest, int line_size, INT16 *block)
}
}
void
simple_idct48_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
)
void
simple_idct48_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
)
{
int
i
;
...
...
libavcodec/simple_idct.h
View file @
0e15384d
...
...
@@ -18,14 +18,14 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
void
simple_idct_put
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
simple_idct_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
ff_simple_idct_mmx
(
shor
t
*
block
);
void
ff_simple_idct_add_mmx
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
ff_simple_idct_put_mmx
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
simple_idct
(
short
*
block
);
void
simple_idct_put
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
);
void
simple_idct_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
);
void
ff_simple_idct_mmx
(
int16_
t
*
block
);
void
ff_simple_idct_add_mmx
(
UINT8
*
dest
,
int
line_size
,
int16_t
*
block
);
void
ff_simple_idct_put_mmx
(
UINT8
*
dest
,
int
line_size
,
int16_t
*
block
);
void
simple_idct
(
DCTELEM
*
block
);
void
simple_idct248_put
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
simple_idct248_put
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
);
void
simple_idct84_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
simple_idct48_add
(
UINT8
*
dest
,
int
line_size
,
INT16
*
block
);
void
simple_idct84_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
);
void
simple_idct48_add
(
UINT8
*
dest
,
int
line_size
,
DCTELEM
*
block
);
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