Fixes a part of ticket #503.
Reviewed-by: Paul B Mahol
Reviewed-by: Jean First
... | ... |
@@ -302,6 +302,9 @@ static int init_image(TiffContext *s) |
302 | 302 |
case 483: |
303 | 303 |
s->avctx->pix_fmt = s->le ? PIX_FMT_RGB48LE : PIX_FMT_RGB48BE; |
304 | 304 |
break; |
305 |
+ case 644: |
|
306 |
+ s->avctx->pix_fmt = s->le ? PIX_FMT_RGBA64LE : PIX_FMT_RGBA64BE; |
|
307 |
+ break; |
|
305 | 308 |
default: |
306 | 309 |
av_log(s->avctx, AV_LOG_ERROR, |
307 | 310 |
"This format is not supported (bpp=%d, bppcount=%d)\n", |
... | ... |
@@ -647,13 +650,15 @@ static int decode_frame(AVCodecContext *avctx, |
647 | 647 |
dst = p->data[0]; |
648 | 648 |
soff = s->bpp >> 3; |
649 | 649 |
ssize = s->width * soff; |
650 |
- if (s->avctx->pix_fmt == PIX_FMT_RGB48LE) { |
|
650 |
+ if (s->avctx->pix_fmt == PIX_FMT_RGB48LE || |
|
651 |
+ s->avctx->pix_fmt == PIX_FMT_RGBA64LE) { |
|
651 | 652 |
for (i = 0; i < s->height; i++) { |
652 | 653 |
for (j = soff; j < ssize; j += 2) |
653 | 654 |
AV_WL16(dst + j, AV_RL16(dst + j) + AV_RL16(dst + j - soff)); |
654 | 655 |
dst += stride; |
655 | 656 |
} |
656 |
- } else if (s->avctx->pix_fmt == PIX_FMT_RGB48BE) { |
|
657 |
+ } else if (s->avctx->pix_fmt == PIX_FMT_RGB48BE || |
|
658 |
+ s->avctx->pix_fmt == PIX_FMT_RGBA64BE) { |
|
657 | 659 |
for (i = 0; i < s->height; i++) { |
658 | 660 |
for (j = soff; j < ssize; j += 2) |
659 | 661 |
AV_WB16(dst + j, AV_RB16(dst + j) + AV_RB16(dst + j - soff)); |
... | ... |
@@ -255,6 +255,14 @@ static int encode_frame(AVCodecContext * avctx, unsigned char *buf, |
255 | 255 |
s->subsampling[1] = 1; |
256 | 256 |
|
257 | 257 |
switch (avctx->pix_fmt) { |
258 |
+ case PIX_FMT_RGBA64LE: |
|
259 |
+ s->bpp = 64; |
|
260 |
+ s->photometric_interpretation = 2; |
|
261 |
+ bpp_tab[0] = 16; |
|
262 |
+ bpp_tab[1] = 16; |
|
263 |
+ bpp_tab[2] = 16; |
|
264 |
+ bpp_tab[3] = 16; |
|
265 |
+ break; |
|
258 | 266 |
case PIX_FMT_RGB48LE: |
259 | 267 |
s->bpp = 48; |
260 | 268 |
s->photometric_interpretation = 2; |
... | ... |
@@ -498,7 +506,7 @@ AVCodec ff_tiff_encoder = { |
498 | 498 |
PIX_FMT_YUV420P, PIX_FMT_YUV422P, |
499 | 499 |
PIX_FMT_YUV444P, PIX_FMT_YUV410P, |
500 | 500 |
PIX_FMT_YUV411P, PIX_FMT_RGB48LE, |
501 |
- PIX_FMT_RGBA, PIX_FMT_NONE}, |
|
501 |
+ PIX_FMT_RGBA, PIX_FMT_RGBA64LE, PIX_FMT_NONE}, |
|
502 | 502 |
.long_name = NULL_IF_CONFIG_SMALL("TIFF image"), |
503 | 503 |
.priv_class = &tiffenc_class, |
504 | 504 |
}; |
... | ... |
@@ -22,7 +22,7 @@ |
22 | 22 |
|
23 | 23 |
#define LIBAVCODEC_VERSION_MAJOR 53 |
24 | 24 |
#define LIBAVCODEC_VERSION_MINOR 55 |
25 |
-#define LIBAVCODEC_VERSION_MICRO 101 |
|
25 |
+#define LIBAVCODEC_VERSION_MICRO 102 |
|
26 | 26 |
|
27 | 27 |
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ |
28 | 28 |
LIBAVCODEC_VERSION_MINOR, \ |