@ -406,58 +406,17 @@ static av_cold int dirac_decode_end(AVCodecContext *avctx)
return 0 ;
}
# define SIGN_CTX(x) (CTX_SIGN_ZERO + ((x) > 0) - ((x) < 0))
static inline int coeff_unpack_golomb ( GetBitContext * gb , int qfactor , int qoffset )
{
int sign , coeff ;
uint32_t buf ;
OPEN_READER ( re , gb ) ;
UPDATE_CACHE ( re , gb ) ;
buf = GET_CACHE ( re , gb ) ;
if ( buf & 0x80000000 ) {
LAST_SKIP_BITS ( re , gb , 1 ) ;
CLOSE_READER ( re , gb ) ;
return 0 ;
}
if ( buf & 0xAA800000 ) {
buf > > = 32 - 8 ;
SKIP_BITS ( re , gb , ff_interleaved_golomb_vlc_len [ buf ] ) ;
coeff = ff_interleaved_ue_golomb_vlc_code [ buf ] ;
} else {
unsigned ret = 1 ;
do {
buf > > = 32 - 8 ;
SKIP_BITS ( re , gb ,
FFMIN ( ff_interleaved_golomb_vlc_len [ buf ] , 8 ) ) ;
if ( ff_interleaved_golomb_vlc_len [ buf ] ! = 9 ) {
ret < < = ( ff_interleaved_golomb_vlc_len [ buf ] - 1 ) > > 1 ;
ret | = ff_interleaved_dirac_golomb_vlc_code [ buf ] ;
break ;
}
ret = ( ret < < 4 ) | ff_interleaved_dirac_golomb_vlc_code [ buf ] ;
UPDATE_CACHE ( re , gb ) ;
buf = GET_CACHE ( re , gb ) ;
} while ( ret < 0x8000000U & & BITS_AVAILABLE ( re , gb ) ) ;
coeff = ret - 1 ;
}
coeff = ( coeff * qfactor + qoffset ) > > 2 ;
sign = SHOW_SBITS ( re , gb , 1 ) ;
LAST_SKIP_BITS ( re , gb , 1 ) ;
coeff = ( coeff ^ sign ) - sign ;
CLOSE_READER ( re , gb ) ;
int coeff = dirac_get_se_golomb ( gb ) ;
const int sign = FFSIGN ( coeff ) ;
if ( coeff )
coeff = sign * ( ( sign * coeff * qfactor + qoffset ) > > 2 ) ;
return coeff ;
}
# define SIGN_CTX(x) (CTX_SIGN_ZERO + ((x) > 0) - ((x) < 0))
# define UNPACK_ARITH(n, type) \
static inline void coeff_unpack_arith_ # # n ( DiracArith * c , int qfactor , int qoffset , \
SubBand * b , type * buf , int x , int y ) \