|
|
|
@ -52,7 +52,7 @@ static av_cold int cyuv_decode_init(AVCodecContext *avctx) |
|
|
|
|
s->width = avctx->width; |
|
|
|
|
/* width needs to be divisible by 4 for this codec to work */ |
|
|
|
|
if (s->width & 0x3) |
|
|
|
|
return -1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
s->height = avctx->height; |
|
|
|
|
avctx->pix_fmt = AV_PIX_FMT_YUV411P; |
|
|
|
|
|
|
|
|
@ -83,6 +83,7 @@ static int cyuv_decode_frame(AVCodecContext *avctx, |
|
|
|
|
int stream_ptr; |
|
|
|
|
unsigned char cur_byte; |
|
|
|
|
int pixel_groups; |
|
|
|
|
int ret; |
|
|
|
|
|
|
|
|
|
if (avctx->codec_id == AV_CODEC_ID_AURA) { |
|
|
|
|
y_table = u_table; |
|
|
|
@ -95,7 +96,7 @@ static int cyuv_decode_frame(AVCodecContext *avctx, |
|
|
|
|
if (buf_size != 48 + s->height * (s->width * 3 / 4)) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "got a buffer with %d bytes when %d were expected\n", |
|
|
|
|
buf_size, 48 + s->height * (s->width * 3 / 4)); |
|
|
|
|
return -1; |
|
|
|
|
return AVERROR_INVALIDDATA; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* pixel data starts 48 bytes in, after 3x16-byte tables */ |
|
|
|
@ -106,9 +107,9 @@ static int cyuv_decode_frame(AVCodecContext *avctx, |
|
|
|
|
|
|
|
|
|
s->frame.buffer_hints = FF_BUFFER_HINTS_VALID; |
|
|
|
|
s->frame.reference = 0; |
|
|
|
|
if (ff_get_buffer(avctx, &s->frame) < 0) { |
|
|
|
|
if ((ret = ff_get_buffer(avctx, &s->frame)) < 0) { |
|
|
|
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); |
|
|
|
|
return -1; |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
y_plane = s->frame.data[0]; |
|
|
|
|