mjpegb: don't return 0 at the end of frame decoding.
Return 0 indicates "please return the same data again", i.e. it causes an infinite loop. Instead, return that we consumed the buffer if we finished decoding succesfully, or return an error if an error occurred. Found-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind CC: libav-stable@libav.org
This commit is contained in:
@@ -69,7 +69,7 @@ read_header:
|
|||||||
if (get_bits_long(&hgb, 32) != MKBETAG('m','j','p','g'))
|
if (get_bits_long(&hgb, 32) != MKBETAG('m','j','p','g'))
|
||||||
{
|
{
|
||||||
av_log(avctx, AV_LOG_WARNING, "not mjpeg-b (bad fourcc)\n");
|
av_log(avctx, AV_LOG_WARNING, "not mjpeg-b (bad fourcc)\n");
|
||||||
return 0;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
field_size = get_bits_long(&hgb, 32); /* field size */
|
field_size = get_bits_long(&hgb, 32); /* field size */
|
||||||
@@ -149,7 +149,7 @@ read_header:
|
|||||||
picture->quality*= FF_QP2LAMBDA;
|
picture->quality*= FF_QP2LAMBDA;
|
||||||
}
|
}
|
||||||
|
|
||||||
return buf_ptr - buf;
|
return buf_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
AVCodec ff_mjpegb_decoder = {
|
AVCodec ff_mjpegb_decoder = {
|
||||||
|
|||||||
Reference in New Issue
Block a user