/* Copyright (C) 2009 Red Hat, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef __QUIC_H #define __QUIC_H #include "quic_config.h" typedef enum { QUIC_IMAGE_TYPE_INVALID, QUIC_IMAGE_TYPE_GRAY, QUIC_IMAGE_TYPE_RGB16, QUIC_IMAGE_TYPE_RGB24, QUIC_IMAGE_TYPE_RGB32, QUIC_IMAGE_TYPE_RGBA } QuicImageType; #define QUIC_ERROR -1 #define QUIC_OK 0 typedef void *QuicContext; typedef struct QuicUsrContext QuicUsrContext; struct QuicUsrContext { void (*error)(QuicUsrContext *usr, const char *fmt, ...); void (*warn)(QuicUsrContext *usr, const char *fmt, ...); void (*info)(QuicUsrContext *usr, const char *fmt, ...); void *(*malloc)(QuicUsrContext *usr, int size); void (*free)(QuicUsrContext *usr, void *ptr); int (*more_space)(QuicUsrContext *usr, uint32_t **io_ptr, int rows_completed); int (*more_lines)(QuicUsrContext *usr, uint8_t **lines); // on return the last line of previous // lines bunch must stil be valid }; int quic_encode(QuicContext *quic, QuicImageType type, int width, int height, uint8_t *lines, unsigned int num_lines, int stride, uint32_t *io_ptr, unsigned int num_io_words); int quic_decode_begin(QuicContext *quic, uint32_t *io_ptr, unsigned int num_io_words, QuicImageType *type, int *width, int *height); int quic_decode(QuicContext *quic, QuicImageType type, uint8_t *buf, int stride); QuicContext *quic_create(QuicUsrContext *usr); void quic_destroy(QuicContext *quic); void quic_init(); #endif