yading@10: /* yading@10: * PNG image format yading@10: * Copyright (c) 2003 Fabrice Bellard yading@10: * yading@10: * This file is part of FFmpeg. yading@10: * yading@10: * FFmpeg is free software; you can redistribute it and/or yading@10: * modify it under the terms of the GNU Lesser General Public yading@10: * License as published by the Free Software Foundation; either yading@10: * version 2.1 of the License, or (at your option) any later version. yading@10: * yading@10: * FFmpeg is distributed in the hope that it will be useful, yading@10: * but WITHOUT ANY WARRANTY; without even the implied warranty of yading@10: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU yading@10: * Lesser General Public License for more details. yading@10: * yading@10: * You should have received a copy of the GNU Lesser General Public yading@10: * License along with FFmpeg; if not, write to the Free Software yading@10: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA yading@10: */ yading@10: yading@10: #ifndef AVCODEC_PNG_H yading@10: #define AVCODEC_PNG_H yading@10: yading@10: #include yading@10: yading@10: #define PNG_COLOR_MASK_PALETTE 1 yading@10: #define PNG_COLOR_MASK_COLOR 2 yading@10: #define PNG_COLOR_MASK_ALPHA 4 yading@10: yading@10: #define PNG_COLOR_TYPE_GRAY 0 yading@10: #define PNG_COLOR_TYPE_PALETTE (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_PALETTE) yading@10: #define PNG_COLOR_TYPE_RGB (PNG_COLOR_MASK_COLOR) yading@10: #define PNG_COLOR_TYPE_RGB_ALPHA (PNG_COLOR_MASK_COLOR | PNG_COLOR_MASK_ALPHA) yading@10: #define PNG_COLOR_TYPE_GRAY_ALPHA (PNG_COLOR_MASK_ALPHA) yading@10: yading@10: #define PNG_FILTER_TYPE_LOCO 64 yading@10: #define PNG_FILTER_VALUE_NONE 0 yading@10: #define PNG_FILTER_VALUE_SUB 1 yading@10: #define PNG_FILTER_VALUE_UP 2 yading@10: #define PNG_FILTER_VALUE_AVG 3 yading@10: #define PNG_FILTER_VALUE_PAETH 4 yading@10: #define PNG_FILTER_VALUE_MIXED 5 yading@10: yading@10: #define PNG_IHDR 0x0001 yading@10: #define PNG_IDAT 0x0002 yading@10: #define PNG_ALLIMAGE 0x0004 yading@10: #define PNG_PLTE 0x0008 yading@10: yading@10: #define NB_PASSES 7 yading@10: yading@10: #define PNGSIG 0x89504e470d0a1a0a yading@10: #define MNGSIG 0x8a4d4e470d0a1a0a yading@10: yading@10: /* Mask to determine which y pixels are valid in a pass */ yading@10: extern const uint8_t ff_png_pass_ymask[NB_PASSES]; yading@10: yading@10: void *ff_png_zalloc(void *opaque, unsigned int items, unsigned int size); yading@10: yading@10: void ff_png_zfree(void *opaque, void *ptr); yading@10: yading@10: int ff_png_get_nb_channels(int color_type); yading@10: yading@10: /* compute the row size of an interleaved pass */ yading@10: int ff_png_pass_row_size(int pass, int bits_per_pixel, int width); yading@10: yading@10: void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp); yading@10: yading@10: #endif /* AVCODEC_PNG_H */