ffmpeg | branch: master | Carl Eugen Hoyos <ceho...@ag.or.at> | Tue Jun 14 17:02:34 2016 +0200| [d5ded429f25cf245f37556ec3076cade9d1fb67f] | committer: Carl Eugen Hoyos
lavc/dpx: Support decoding 10 bit colourspace with transparency information. Fixes one sample from ticket #5639. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d5ded429f25cf245f37556ec3076cade9d1fb67f --- libavcodec/dpx.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/dpx.c b/libavcodec/dpx.c index af7276a..b439e10 100644 --- a/libavcodec/dpx.c +++ b/libavcodec/dpx.c @@ -256,11 +256,13 @@ static int decode_frame(AVCodecContext *avctx, avctx->pix_fmt = AV_PIX_FMT_RGBA; break; case 50100: - case 51100: case 50101: - case 51101: avctx->pix_fmt = AV_PIX_FMT_GBRP10; break; + case 51100: + case 51101: + avctx->pix_fmt = AV_PIX_FMT_GBRAP10; + break; case 50120: case 51120: case 50121: @@ -313,9 +315,10 @@ static int decode_frame(AVCodecContext *avctx, switch (bits_per_color) { case 10: for (x = 0; x < avctx->height; x++) { - uint16_t *dst[3] = {(uint16_t*)ptr[0], + uint16_t *dst[4] = {(uint16_t*)ptr[0], (uint16_t*)ptr[1], - (uint16_t*)ptr[2]}; + (uint16_t*)ptr[2], + (uint16_t*)ptr[3]}; for (y = 0; y < avctx->width; y++) { *dst[2]++ = read10in32(&buf, &rgbBuffer, &n_datum, endian); @@ -323,13 +326,13 @@ static int decode_frame(AVCodecContext *avctx, &n_datum, endian); *dst[1]++ = read10in32(&buf, &rgbBuffer, &n_datum, endian); - // For 10 bit, ignore alpha if (elements == 4) + *dst[3]++ = read10in32(&buf, &rgbBuffer, &n_datum, endian); } n_datum = 0; - for (i = 0; i < 3; i++) + for (i = 0; i < elements; i++) ptr[i] += p->linesize[i]; } break; _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog