|
|
@@ -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 = { |
|
|
|