@ -283,10 +283,10 @@ static int copy_cell(Indeo3DecodeContext *ctx, Plane *plane, Cell *cell)
/* Average 4/8 pixels at once without rounding using SWAR */
# define AVG_32(dst, src, ref) \
AV_WN32A ( dst , ( ( AV_RN32A ( src ) + AV_RN32A ( ref ) ) > > 1 ) & 0x7F7F7F7FUL )
AV_WN32A ( dst , ( ( AV_RN32 ( src ) + AV_RN32 ( ref ) ) > > 1 ) & 0x7F7F7F7FUL )
# define AVG_64(dst, src, ref) \
AV_WN64A ( dst , ( ( AV_RN64A ( src ) + AV_RN64A ( ref ) ) > > 1 ) & 0x7F7F7F7F7F7F7F7FULL )
AV_WN64A ( dst , ( ( AV_RN64 ( src ) + AV_RN64 ( ref ) ) > > 1 ) & 0x7F7F7F7F7F7F7F7FULL )
/*
@ -345,7 +345,7 @@ if (*data_ptr >= last_ptr) \
copy_block4 ( dst , ref , row_offset , row_offset , 4 < < v_zoom )
# define RLE_BLOCK_COPY_8 \
pix64 = AV_RN64A ( ref ) ; \
pix64 = AV_RN64 ( ref ) ; \
if ( is_first_row ) { /* special prediction case: top line of a cell */ \
pix64 = replicate64 ( pix64 ) ; \
fill_64 ( dst + row_offset , pix64 , 7 , row_offset ) ; \
@ -357,7 +357,7 @@ if (*data_ptr >= last_ptr) \
copy_block4 ( dst , ref , row_offset , row_offset , num_lines < < v_zoom )
# define RLE_LINES_COPY_M10 \
pix64 = AV_RN64A ( ref ) ; \
pix64 = AV_RN64 ( ref ) ; \
if ( is_top_of_cell ) { \
pix64 = replicate64 ( pix64 ) ; \
fill_64 ( dst + row_offset , pix64 , ( num_lines < < 1 ) - 1 , row_offset ) ; \
@ -367,12 +367,12 @@ if (*data_ptr >= last_ptr) \
# define APPLY_DELTA_4 \
AV_WN16A ( dst + line_offset , \
( AV_RN16A ( ref ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
( AV_RN16 ( ref ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
AV_WN16A ( dst + line_offset + 2 , \
( AV_RN16A ( ref + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
( AV_RN16 ( ref + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
if ( mode > = 3 ) { \
if ( is_top_of_cell & & ! cell - > ypos ) { \
AV_COPY32 ( dst , dst + row_offset ) ; \
AV_COPY32U ( dst , dst + row_offset ) ; \
} else { \
AVG_32 ( dst , ref , dst + row_offset ) ; \
} \
@ -382,20 +382,20 @@ if (*data_ptr >= last_ptr) \
/* apply two 32-bit VQ deltas to next even line */ \
if ( is_top_of_cell ) { \
AV_WN32A ( dst + row_offset , \
( replicate32 ( AV_RN32A ( ref ) ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
( replicate32 ( AV_RN32 ( ref ) ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
AV_WN32A ( dst + row_offset + 4 , \
( replicate32 ( AV_RN32A ( ref + 4 ) ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
( replicate32 ( AV_RN32 ( ref + 4 ) ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
} else { \
AV_WN32A ( dst + row_offset , \
( AV_RN32A ( ref ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( ref ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
AV_WN32A ( dst + row_offset + 4 , \
( AV_RN32A ( ref + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( ref + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
} \
/* odd lines are not coded but rather interpolated/replicated */ \
/* first line of the cell on the top of image? - replicate */ \
/* otherwise - interpolate */ \
if ( is_top_of_cell & & ! cell - > ypos ) { \
AV_COPY64 ( dst , dst + row_offset ) ; \
AV_COPY64U ( dst , dst + row_offset ) ; \
} else \
AVG_64 ( dst , ref , dst + row_offset ) ;
@ -403,22 +403,22 @@ if (*data_ptr >= last_ptr) \
# define APPLY_DELTA_1011_INTER \
if ( mode = = 10 ) { \
AV_WN32A ( dst , \
( AV_RN32A ( dst ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( dst ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
AV_WN32A ( dst + 4 , \
( AV_RN32A ( dst + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( dst + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
AV_WN32A ( dst + row_offset , \
( AV_RN32A ( dst + row_offset ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( dst + row_offset ) + delta_tab - > deltas_m10 [ dyad1 ] ) & 0x7F7F7F7F ) ; \
AV_WN32A ( dst + row_offset + 4 , \
( AV_RN32A ( dst + row_offset + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
( AV_RN32 ( dst + row_offset + 4 ) + delta_tab - > deltas_m10 [ dyad2 ] ) & 0x7F7F7F7F ) ; \
} else { \
AV_WN16A ( dst , \
( AV_RN16A ( dst ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
( AV_RN16 ( dst ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
AV_WN16A ( dst + 2 , \
( AV_RN16A ( dst + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
( AV_RN16 ( dst + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
AV_WN16A ( dst + row_offset , \
( AV_RN16A ( dst + row_offset ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
( AV_RN16 ( dst + row_offset ) + delta_tab - > deltas [ dyad1 ] ) & 0x7F7F ) ; \
AV_WN16A ( dst + row_offset + 2 , \
( AV_RN16A ( dst + row_offset + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
( AV_RN16 ( dst + row_offset + 2 ) + delta_tab - > deltas [ dyad2 ] ) & 0x7F7F ) ; \
}