diff options
| -rw-r--r-- | include/tinyff/image/png.h | 4 | ||||
| -rw-r--r-- | src/format/image/png.c | 18 |
2 files changed, 22 insertions, 0 deletions
diff --git a/include/tinyff/image/png.h b/include/tinyff/image/png.h index e24ced8..fb064db 100644 --- a/include/tinyff/image/png.h +++ b/include/tinyff/image/png.h @@ -79,12 +79,16 @@ ff_result ff_png_trans_handler(ff_ctx* ctx, uint8_t *buf, size_t len, ff_png_ctx extern const ff_png_chunk_handler ff_png_chunk_handlers[]; +// Encoding helpers +ff_result ff_write_chunk(ff_stream *stream, const char *type, uint8_t *buf, size_t len); ff_result ff_png_isvalid(ff_ctx* ctx, ff_stream *stream); ff_result ff_open_png(ff_ctx* ctx, ff_stream *stream, ff_png_ctx **out_ctx, ff_flag require_valid); ff_result ff_close_png(ff_ctx* ctx, ff_png_ctx *png_ctx); +ff_result ff_encode_png(ff_ctx* ctx, ff_png_ctx *png_ctx, ff_stream *stream); + ff_result ff_png_normalize(ff_ctx* ctx, ff_png_ctx *png_ctx, ff_image_ctx **out_data, ff_flag consume); #endif diff --git a/src/format/image/png.c b/src/format/image/png.c index 728fc23..12080d6 100644 --- a/src/format/image/png.c +++ b/src/format/image/png.c @@ -480,6 +480,7 @@ ff_result ff_close_png(ff_ctx* ctx, ff_png_ctx *png_ctx) return FF_RESULT_OK; } + ff_result ff_write_chunk(ff_stream *stream, const char *type, uint8_t *buf, size_t len) { stream->write(stream, 4, type); @@ -489,6 +490,23 @@ ff_result ff_write_chunk(ff_stream *stream, const char *type, uint8_t *buf, size return FF_RESULT_OK; } +ff_result ff_encode_png(ff_ctx *ctx, ff_png_ctx *png_ctx, ff_stream *stream) +{ + FF_BENCH_START(ctx, "png"); + FF_BENCH_MARK(ctx, "ff_encode_png"); + + stream->write(stream, 8, PNG_SIGNATURE); + + // TODO: Actually write the PNG data + // For now I'll void the parameters + (void)ctx; + (void)png_ctx; + + FF_BENCH_END(ctx); + + return FF_RESULT_WARN_NO_IMPL; +} + ff_result ff_png_normalize(ff_ctx *ctx, ff_png_ctx *png_ctx, ff_image_ctx **out_data, ff_flag consume) { if (png_ctx->bit_depth != 8) return FF_RESULT_WARN_NO_IMPL; |
