mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
fixing DCTELEM != short
Originally committed as revision 1462 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
3a87ac948f
commit
0e15384d9d
@ -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;
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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(short *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);
|
||||
|
Loading…
Reference in New Issue
Block a user