mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-20 14:20:51 +00:00
avcodec/wmalosslessdec: do not discard last frame
Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
571aa7d25e
commit
60b75186b2
@ -1043,6 +1043,9 @@ static int decode_frame(WmallDecodeCtx *s)
|
||||
if (get_bits1(gb)) {
|
||||
skip = get_bits(gb, av_log2(s->samples_per_frame * 2));
|
||||
ff_dlog(s->avctx, "end skip: %i\n", skip);
|
||||
s->frame->nb_samples -= skip;
|
||||
if (s->frame->nb_samples <= 0)
|
||||
return AVERROR_INVALIDDATA;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1163,7 +1166,11 @@ static int decode_packet(AVCodecContext *avctx, void *data, int *got_frame_ptr,
|
||||
|
||||
s->frame->nb_samples = 0;
|
||||
|
||||
if (s->packet_done || s->packet_loss) {
|
||||
if (!buf_size && s->num_saved_bits > get_bits_count(&s->gb)) {
|
||||
s->packet_done = 0;
|
||||
if (!decode_frame(s))
|
||||
s->num_saved_bits = 0;
|
||||
} else if (s->packet_done || s->packet_loss) {
|
||||
s->packet_done = 0;
|
||||
|
||||
if (!buf_size)
|
||||
@ -1264,7 +1271,7 @@ static int decode_packet(AVCodecContext *avctx, void *data, int *got_frame_ptr,
|
||||
|
||||
s->packet_offset = get_bits_count(gb) & 7;
|
||||
|
||||
return (s->packet_loss) ? AVERROR_INVALIDDATA : get_bits_count(gb) >> 3;
|
||||
return (s->packet_loss) ? AVERROR_INVALIDDATA : buf_size ? get_bits_count(gb) >> 3 : 0;
|
||||
}
|
||||
|
||||
static void flush(AVCodecContext *avctx)
|
||||
|
Loading…
Reference in New Issue
Block a user