summaryrefslogtreecommitdiff
path: root/src/format/image
diff options
context:
space:
mode:
Diffstat (limited to 'src/format/image')
-rw-r--r--src/format/image/png.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/format/image/png.c b/src/format/image/png.c
index c5dcb4d..1004b2a 100644
--- a/src/format/image/png.c
+++ b/src/format/image/png.c
@@ -242,7 +242,7 @@ ff_result ff_png_data_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx
// Getting the size is weird cause it could the sample count
// could be different based on color type and bit depth
- size_t uncompressed_size = png_ctx->width * png_ctx->height * ff_png_bpp(png_ctx);
+ size_t uncompressed_size = png_ctx->height * (1 + png_ctx->width * ff_png_bpp(png_ctx));
uncompressed_data = ctx->allocator.ff_alloc(uncompressed_size);
@@ -254,7 +254,7 @@ ff_result ff_png_data_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx
}
unsigned int out_size = (unsigned int)uncompressed_size;
- if (tinf_uncompress(uncompressed_data, &out_size, buf, len) != TINF_OK) {
+ if (tinf_uncompress(uncompressed_data, &out_size, buf + 2, len - 2) != TINF_OK) {
ff_dprintf(ctx, "png: failed to uncompress IDAT data\n");
ctx->allocator.ff_free(uncompressed_data);
@@ -436,3 +436,6 @@ ff_result ff_png_trans_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx
return FF_RESULT_WARN_NO_IMPL;
}
+
+
+// TODO: Add ff_close_png \ No newline at end of file