mirror of https://git.ffmpeg.org/ffmpeg.git
Support solid gray frames when decoding Lagarith.
Fixes bug 431.
This commit is contained in:
parent
e65d8509f0
commit
40297a8bdb
|
@ -535,6 +535,14 @@ static int lag_decode_frame(AVCodecContext *avctx,
|
||||||
switch (frametype) {
|
switch (frametype) {
|
||||||
case FRAME_SOLID_RGBA:
|
case FRAME_SOLID_RGBA:
|
||||||
avctx->pix_fmt = AV_PIX_FMT_RGB32;
|
avctx->pix_fmt = AV_PIX_FMT_RGB32;
|
||||||
|
case FRAME_SOLID_GRAY:
|
||||||
|
if (frametype == FRAME_SOLID_GRAY)
|
||||||
|
if (avctx->bits_per_coded_sample == 24) {
|
||||||
|
avctx->pix_fmt = AV_PIX_FMT_RGB24;
|
||||||
|
} else {
|
||||||
|
avctx->pix_fmt = AV_PIX_FMT_0RGB32;
|
||||||
|
planes = 4;
|
||||||
|
}
|
||||||
|
|
||||||
if (ff_thread_get_buffer(avctx, p) < 0) {
|
if (ff_thread_get_buffer(avctx, p) < 0) {
|
||||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||||
|
@ -542,11 +550,18 @@ static int lag_decode_frame(AVCodecContext *avctx,
|
||||||
}
|
}
|
||||||
|
|
||||||
dst = p->data[0];
|
dst = p->data[0];
|
||||||
|
if (frametype == FRAME_SOLID_RGBA) {
|
||||||
for (j = 0; j < avctx->height; j++) {
|
for (j = 0; j < avctx->height; j++) {
|
||||||
for (i = 0; i < avctx->width; i++)
|
for (i = 0; i < avctx->width; i++)
|
||||||
AV_WN32(dst + i * 4, offset_gu);
|
AV_WN32(dst + i * 4, offset_gu);
|
||||||
dst += p->linesize[0];
|
dst += p->linesize[0];
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (j = 0; j < avctx->height; j++) {
|
||||||
|
memset(dst, buf[1], avctx->width * planes);
|
||||||
|
dst += p->linesize[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case FRAME_ARITH_RGBA:
|
case FRAME_ARITH_RGBA:
|
||||||
avctx->pix_fmt = AV_PIX_FMT_RGB32;
|
avctx->pix_fmt = AV_PIX_FMT_RGB32;
|
||||||
|
|
Loading…
Reference in New Issue