mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-30 14:40:32 +00:00
Ignore blocks with no samples and flags (but usually with MD5 sum)
Originally committed as revision 6694 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
3d0c32d4a9
commit
a8789714ba
@ -388,6 +388,7 @@ static int wavpack_decode_frame(AVCodecContext *avctx,
|
|||||||
memset(s->decorr, 0, MAX_TERMS * sizeof(Decorr));
|
memset(s->decorr, 0, MAX_TERMS * sizeof(Decorr));
|
||||||
|
|
||||||
s->samples = LE_32(buf); buf += 4;
|
s->samples = LE_32(buf); buf += 4;
|
||||||
|
if(!s->samples) return buf_size;
|
||||||
/* should not happen but who knows */
|
/* should not happen but who knows */
|
||||||
if(s->samples * 2 * avctx->channels > AVCODEC_MAX_AUDIO_FRAME_SIZE){
|
if(s->samples * 2 * avctx->channels > AVCODEC_MAX_AUDIO_FRAME_SIZE){
|
||||||
av_log(avctx, AV_LOG_ERROR, "Packet size is too big to be handled in lavc!\n");
|
av_log(avctx, AV_LOG_ERROR, "Packet size is too big to be handled in lavc!\n");
|
||||||
|
@ -118,15 +118,15 @@ static int wv_read_block_header(AVFormatContext *ctx, ByteIOContext *pb)
|
|||||||
if(!wc->chan) wc->chan = chan;
|
if(!wc->chan) wc->chan = chan;
|
||||||
if(!wc->rate) wc->rate = rate;
|
if(!wc->rate) wc->rate = rate;
|
||||||
|
|
||||||
if(bpp != wc->bpp){
|
if(wc->flags && bpp != wc->bpp){
|
||||||
av_log(ctx, AV_LOG_ERROR, "Bits per sample differ, this block: %i, header block: %i\n", bpp, wc->bpp);
|
av_log(ctx, AV_LOG_ERROR, "Bits per sample differ, this block: %i, header block: %i\n", bpp, wc->bpp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(chan != wc->chan){
|
if(wc->flags && chan != wc->chan){
|
||||||
av_log(ctx, AV_LOG_ERROR, "Channels differ, this block: %i, header block: %i\n", chan, wc->chan);
|
av_log(ctx, AV_LOG_ERROR, "Channels differ, this block: %i, header block: %i\n", chan, wc->chan);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if(rate != wc->rate){
|
if(wc->flags && rate != wc->rate){
|
||||||
av_log(ctx, AV_LOG_ERROR, "Sampling rate differ, this block: %i, header block: %i\n", rate, wc->rate);
|
av_log(ctx, AV_LOG_ERROR, "Sampling rate differ, this block: %i, header block: %i\n", rate, wc->rate);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user