X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fdpx.c;h=1aa2cbd1c8acab8f7ad45656546fb6f150041d47;hb=5a447edd475a7ae672f385ca0c76a5fc5a56ac1f;hp=e4dd1b05b5b132b467bbe643b011701d7632d3b6;hpb=1b04ea1a6c237a94f81d1b8f8a42fae46fbeacab;p=ffmpeg diff --git a/libavcodec/dpx.c b/libavcodec/dpx.c index e4dd1b05b5b..1aa2cbd1c8a 100644 --- a/libavcodec/dpx.c +++ b/libavcodec/dpx.c @@ -243,6 +243,10 @@ static int decode_frame(AVCodecContext *avctx, case 6080: avctx->pix_fmt = AV_PIX_FMT_GRAY8; break; + case 6121: + case 6120: + avctx->pix_fmt = AV_PIX_FMT_GRAY12; + break; case 50081: case 50080: avctx->pix_fmt = AV_PIX_FMT_RGB24; @@ -345,12 +349,12 @@ static int decode_frame(AVCodecContext *avctx, (uint16_t*)ptr[2], (uint16_t*)ptr[3]}; for (y = 0; y < avctx->width; y++) { - *dst[2] = read16(&buf, endian) >> 4; - dst[2]++; + if (elements >= 3) + *dst[2]++ = read16(&buf, endian) >> 4; *dst[0] = read16(&buf, endian) >> 4; dst[0]++; - *dst[1] = read16(&buf, endian) >> 4; - dst[1]++; + if (elements >= 2) + *dst[1]++ = read16(&buf, endian) >> 4; if (elements == 4) *dst[3]++ = read16(&buf, endian) >> 4; }