You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-04 22:03:09 +02:00
avcodec/ffv1dec: don't check chroma_planes for f->colorspace > 0
It's RGB, so check instead if it's packed or planar. Fixes: libavcodec/ffv1dec.c:461:43: runtime error: applying zero offset to null pointer Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
@ -447,22 +447,20 @@ static int decode_slice(AVCodecContext *c, void *arg)
|
|||||||
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] , width, height, p->linesize[0], 0, 0, 2, ac);
|
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] , width, height, p->linesize[0], 0, 0, 2, ac);
|
||||||
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] + (ps>>1), width, height, p->linesize[0], 1, 1, 2, ac);
|
decode_plane(f, sc, &gb, p->data[0] + ps*x + y*p->linesize[0] + (ps>>1), width, height, p->linesize[0], 1, 1, 2, ac);
|
||||||
} else if (f->use32bit) {
|
} else if (f->use32bit) {
|
||||||
uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0] };
|
uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0],
|
||||||
if (f->chroma_planes) {
|
p->data[1] + ps * x + y * p->linesize[1],
|
||||||
planes[1] = p->data[1] + ps * x + y * p->linesize[1];
|
p->data[2] + ps * x + y * p->linesize[2] };
|
||||||
planes[2] = p->data[2] + ps * x + y * p->linesize[2];
|
|
||||||
}
|
|
||||||
if (f->transparency)
|
if (f->transparency)
|
||||||
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
|
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
|
||||||
decode_rgb_frame32(f, sc, &gb, planes, width, height, p->linesize);
|
decode_rgb_frame32(f, sc, &gb, planes, width, height, p->linesize);
|
||||||
} else {
|
} else {
|
||||||
uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0] };
|
uint8_t *planes[4] = { p->data[0] + ps * x + y * p->linesize[0] };
|
||||||
if (f->chroma_planes) {
|
if (f->avctx->bits_per_raw_sample > 8) {
|
||||||
planes[1] = p->data[1] + ps * x + y * p->linesize[1];
|
planes[1] = p->data[1] + ps * x + y * p->linesize[1];
|
||||||
planes[2] = p->data[2] + ps * x + y * p->linesize[2];
|
planes[2] = p->data[2] + ps * x + y * p->linesize[2];
|
||||||
|
if (f->transparency)
|
||||||
|
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
|
||||||
}
|
}
|
||||||
if (f->transparency)
|
|
||||||
planes[3] = p->data[3] + ps * x + y * p->linesize[3];
|
|
||||||
decode_rgb_frame(f, sc, &gb, planes, width, height, p->linesize);
|
decode_rgb_frame(f, sc, &gb, planes, width, height, p->linesize);
|
||||||
}
|
}
|
||||||
if (ac != AC_GOLOMB_RICE && f->version > 2) {
|
if (ac != AC_GOLOMB_RICE && f->version > 2) {
|
||||||
|
Reference in New Issue
Block a user