Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
BC
public
external
ffmpeg
Commits
0e15384d
Commit
0e15384d
authored
Jan 15, 2003
by
Michael Niedermayer
Browse files
fixing DCTELEM != short
Originally committed as revision 1462 to
svn://svn.ffmpeg.org/ffmpeg/trunk
parent
3a87ac94
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
65 additions
and
50 deletions
+65
-50
libavcodec/dsputil.c
libavcodec/dsputil.c
+1
-1
libavcodec/dsputil.h
libavcodec/dsputil.h
+2
-1
libavcodec/dv.c
libavcodec/dv.c
+1
-1
libavcodec/h263.c
libavcodec/h263.c
+4
-4
libavcodec/mpegvideo.h
libavcodec/mpegvideo.h
+1
-1
libavcodec/simple_idct.c
libavcodec/simple_idct.c
+47
-33
libavcodec/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