8bps: return meaningful error codes.
This commit is contained in:
parent
f7d15d2f42
commit
313da47aa1
@ -69,15 +69,16 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
unsigned int px_inc;
|
unsigned int px_inc;
|
||||||
unsigned int planes = c->planes;
|
unsigned int planes = c->planes;
|
||||||
unsigned char *planemap = c->planemap;
|
unsigned char *planemap = c->planemap;
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (c->pic.data[0])
|
if (c->pic.data[0])
|
||||||
avctx->release_buffer(avctx, &c->pic);
|
avctx->release_buffer(avctx, &c->pic);
|
||||||
|
|
||||||
c->pic.reference = 0;
|
c->pic.reference = 0;
|
||||||
c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
|
c->pic.buffer_hints = FF_BUFFER_HINTS_VALID;
|
||||||
if (ff_get_buffer(avctx, &c->pic) < 0){
|
if ((ret = ff_get_buffer(avctx, &c->pic)) < 0) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||||
return -1;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set data pointer after line lengths */
|
/* Set data pointer after line lengths */
|
||||||
@ -101,14 +102,14 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
|||||||
/* Decode a row of this plane */
|
/* Decode a row of this plane */
|
||||||
while (dlen > 0) {
|
while (dlen > 0) {
|
||||||
if (dp + 1 >= buf + buf_size)
|
if (dp + 1 >= buf + buf_size)
|
||||||
return -1;
|
return AVERROR_INVALIDDATA;
|
||||||
if ((count = *dp++) <= 127) {
|
if ((count = *dp++) <= 127) {
|
||||||
count++;
|
count++;
|
||||||
dlen -= count + 1;
|
dlen -= count + 1;
|
||||||
if (pixptr + count * px_inc > pixptr_end)
|
if (pixptr + count * px_inc > pixptr_end)
|
||||||
break;
|
break;
|
||||||
if (dp + count > buf + buf_size)
|
if (dp + count > buf + buf_size)
|
||||||
return -1;
|
return AVERROR_INVALIDDATA;
|
||||||
while (count--) {
|
while (count--) {
|
||||||
*pixptr = *dp++;
|
*pixptr = *dp++;
|
||||||
pixptr += px_inc;
|
pixptr += px_inc;
|
||||||
@ -185,7 +186,7 @@ static av_cold int decode_init(AVCodecContext *avctx)
|
|||||||
default:
|
default:
|
||||||
av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
|
av_log(avctx, AV_LOG_ERROR, "Error: Unsupported color depth: %u.\n",
|
||||||
avctx->bits_per_coded_sample);
|
avctx->bits_per_coded_sample);
|
||||||
return -1;
|
return AVERROR_INVALIDDATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user