@ -470,6 +470,7 @@ static float wv_get_value_float(WavpackFrameContext *s, uint32_t *crc, int S)
static void wv_reset_saved_context ( WavpackFrameContext * s )
{
s - > pos = 0 ;
s - > samples_left = 0 ;
s - > sc . crc = s - > extra_sc . crc = 0xFFFFFFFF ;
}
@ -582,6 +583,7 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb, vo
s - > samples_left - = count ;
if ( ! s - > samples_left ) {
wv_reset_saved_context ( s ) ;
if ( crc ! = s - > CRC ) {
av_log ( s - > avctx , AV_LOG_ERROR , " CRC error \n " ) ;
return - 1 ;
@ -590,7 +592,6 @@ static inline int wv_unpack_stereo(WavpackFrameContext *s, GetBitContext *gb, vo
av_log ( s - > avctx , AV_LOG_ERROR , " Extra bits CRC error \n " ) ;
return - 1 ;
}
wv_reset_saved_context ( s ) ;
} else {
s - > pos = pos ;
s - > sc . crc = crc ;
@ -660,6 +661,7 @@ static inline int wv_unpack_mono(WavpackFrameContext *s, GetBitContext *gb, void
s - > samples_left - = count ;
if ( ! s - > samples_left ) {
wv_reset_saved_context ( s ) ;
if ( crc ! = s - > CRC ) {
av_log ( s - > avctx , AV_LOG_ERROR , " CRC error \n " ) ;
return - 1 ;
@ -668,7 +670,6 @@ static inline int wv_unpack_mono(WavpackFrameContext *s, GetBitContext *gb, void
av_log ( s - > avctx , AV_LOG_ERROR , " Extra bits CRC error \n " ) ;
return - 1 ;
}
wv_reset_saved_context ( s ) ;
} else {
s - > pos = pos ;
s - > sc . crc = crc ;
@ -1195,7 +1196,7 @@ static void wavpack_decode_flush(AVCodecContext *avctx)
int i ;
for ( i = 0 ; i < s - > fdec_num ; i + + )
s - > fdec [ i ] - > samples_left = 0 ;
wv_reset_saved_context ( s - > fdec [ i ] ) ;
}
AVCodec ff_wavpack_decoder = {