85 default :
return UINT_MAX;
93 z_stream zstream = { 0 };
96 zstream.next_in = src;
97 zstream.avail_in =
size;
98 zstream.next_out = dst;
99 zstream.avail_out = *
len;
100 zret = inflateInit(&zstream);
102 av_log(
NULL, AV_LOG_ERROR,
"Inflate init error: %d\n", zret);
105 zret = inflate(&zstream, Z_SYNC_FLUSH);
106 inflateEnd(&zstream);
107 *len = zstream.total_out;
108 return zret == Z_STREAM_END ? Z_OK : zret;
113 const uint8_t *src,
int size,
int lines)
115 int c,
line, pixels, code;
125 unsigned long outlen;
127 outlen = width * lines;
131 ret = tiff_uncompress(zbuf, &outlen, src, size);
134 "Uncompressing failed (%lu of %lu) with error %d\n", outlen,
135 (
unsigned long)width * lines, ret);
140 for (line = 0; line < lines; line++) {
141 memcpy(dst, src, width);
163 "Error allocating temporary buffer\n");
168 "Uncompressed fax mode is not supported (yet)\n");
173 memcpy(src2, src, size);
175 for (i = 0; i <
size; i++)
190 for (line = 0; line < lines; line++) {
191 if (src - ssrc > size) {
197 if (ssrc + size - src < width)
200 memcpy(dst, src, width);
203 for (i = 0; i <
width; i++)
209 for (pixels = 0; pixels <
width;) {
210 if (ssrc + size - src < 2)
212 code = (int8_t) * src++;
215 if (pixels + code > width ||
216 ssrc + size - src < code) {
218 "Copy went out of bounds\n");
221 memcpy(dst + pixels, src, code);
224 }
else if (code != -128) {
226 if (pixels + code > width) {
228 "Run went out of bounds\n");
232 memset(dst + pixels, c, code);
239 if (pixels < width) {
277 "This format is not supported (bpp=%d, bppcount=%d)\n",
298 for (i = 0; i < 256; i++)
299 pal[i] = i * 0x010101;
308 unsigned tag, type, count,
off, value = 0;
313 if (end_buf - buf < 12)
331 value =
tget(&buf, type, s->
le);
348 if (count <= 4 &&
type_sizes[type] * count <= 4) {
355 if (buf && (buf < start || buf > end_buf)) {
357 "Tag referencing position outside the image\n");
372 "This format is not supported (bpp=%d, %d components)\n",
381 s->
bpp = (off & 0xFF) + ((off >> 8) & 0xFF) +
382 ((off >> 16) & 0xFF) + ((off >> 24) & 0xFF);
387 for (i = 0; i < count && buf < end_buf; i++)
398 "Samples per pixel requires a single value, many provided\n");
429 "JPEG compression is not supported\n");
438 if (type ==
TIFF_LONG && value == UINT_MAX)
442 "Incorrect value of rows per strip\n");
459 "Tag referencing position outside the image\n");
475 "Tag referencing position outside the image\n");
500 if (value < 1 || value > 2) {
502 "Unknown FillOrder value %d, trying default one\n", value);
510 if (count / 3 > 256 || end_buf - buf < count / 3 * off * 3)
513 gp = buf + count / 3 *
off;
514 bp = buf + count / 3 * off * 2;
516 for (i = 0; i < count / 3; i++) {
517 j = (
tget(&rp, type, s->
le) >>
off) << 16;
518 j |= (
tget(&gp, type, s->
le) >>
off) << 8;
549 int buf_size = avpkt->
size;
553 const uint8_t *orig_buf = buf, *end_buf = buf + buf_size;
558 unsigned soff, ssize;
562 if (end_buf - buf < 8)
568 else if (
id == 0x4D4D)
582 "The answer to life, universe and everything is not correct!\n");
589 if (off >= UINT_MAX - 14 || end_buf - orig_buf < off + 14) {
593 buf = orig_buf +
off;
595 for (i = 0; i < entries; i++) {
614 for (i = 0; i < s->
height; i += s->
rps) {
629 if (soff > buf_size || ssize > buf_size - soff) {
641 ssize = s->
width * soff;
642 for (i = 0; i < s->
height; i++) {
643 for (j = soff; j < ssize; j++)
644 dst[j] += dst[j - soff];
654 for (j = 0; j < s->
height; j++) {
656 src[i] = 255 - src[i];