#include "libavutil/imgutils.h"#include "avcodec.h"#include "bytestream.h"#include "png.h"#include <zlib.h>Go to the source code of this file.
Defines | |
| #define | pb_7f (~0UL/255 * 0x7f) |
| #define | pb_80 (~0UL/255 * 0x80) |
| #define | UNROLL1(bpp, op) |
| #define | UNROLL_FILTER(op) |
| #define | OP_SUB(x, s, l) x+s |
| #define | OP_AVG(x, s, l) (((x + l) >> 1) + s) & 0xff |
Functions | |
| static void | png_put_interlaced_row (uint8_t *dst, int width, int bits_per_pixel, int pass, int color_type, const uint8_t *src) |
| static void | add_bytes_l2_c (uint8_t *dst, uint8_t *src1, uint8_t *src2, int w) |
| static void | add_paeth_prediction_c (uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp) |
| static void | png_filter_row (PNGDecContext *s, uint8_t *dst, int filter_type, uint8_t *src, uint8_t *last, int size, int bpp) |
| static av_always_inline void | convert_to_rgb32_loco (uint8_t *dst, const uint8_t *src, int width, int loco) |
| static void | convert_to_rgb32 (uint8_t *dst, const uint8_t *src, int width, int loco) |
| static void | deloco_rgb24 (uint8_t *dst, int size) |
| static void | png_handle_row (PNGDecContext *s) |
| static int | png_decode_idat (PNGDecContext *s, int length) |
| static int | decode_frame (AVCodecContext *avctx, void *data, int *data_size, AVPacket *avpkt) |
| static av_cold int | png_dec_init (AVCodecContext *avctx) |
| static av_cold int | png_dec_end (AVCodecContext *avctx) |
Variables | |
| static const uint8_t | png_pass_dsp_ymask [NB_PASSES] |
| static const uint8_t | png_pass_dsp_mask [NB_PASSES] |
| AVCodec | ff_png_decoder |
| #define OP_AVG | ( | x, | |||
| s, | |||||
| l | ) | (((x + l) >> 1) + s) & 0xff |
| #define OP_SUB | ( | x, | |||
| s, | |||||
| l | ) | x+s |
Referenced by png_filter_row().
| #define UNROLL1 | ( | bpp, | |||
| op | ) |
Value:
{\
r = dst[0];\
if(bpp >= 2) g = dst[1];\
if(bpp >= 3) b = dst[2];\
if(bpp >= 4) a = dst[3];\
for(; i < size; i+=bpp) {\
dst[i+0] = r = op(r, src[i+0], last[i+0]);\
if(bpp == 1) continue;\
dst[i+1] = g = op(g, src[i+1], last[i+1]);\
if(bpp == 2) continue;\
dst[i+2] = b = op(b, src[i+2], last[i+2]);\
if(bpp == 3) continue;\
dst[i+3] = a = op(a, src[i+3], last[i+3]);\
}\
}
| #define UNROLL_FILTER | ( | op | ) |
Value:
if(bpp == 1) UNROLL1(1, op)\ else if(bpp == 2) UNROLL1(2, op)\ else if(bpp == 3) UNROLL1(3, op)\ else if(bpp == 4) UNROLL1(4, op)\ else {\ for (; i < size; i += bpp) {\ int j;\ for (j = 0; j < bpp; j++)\ dst[i+j] = op(dst[i+j-bpp], src[i+j], last[i+j]);\ }\ }
Definition at line 188 of file pngdec.c.
Referenced by png_filter_row().
| static void add_bytes_l2_c | ( | uint8_t * | dst, | |
| uint8_t * | src1, | |||
| uint8_t * | src2, | |||
| int | w | |||
| ) | [static] |
| static void add_paeth_prediction_c | ( | uint8_t * | dst, | |
| uint8_t * | src, | |||
| uint8_t * | top, | |||
| int | w, | |||
| int | bpp | |||
| ) | [static] |
| static void convert_to_rgb32 | ( | uint8_t * | dst, | |
| const uint8_t * | src, | |||
| int | width, | |||
| int | loco | |||
| ) | [static] |
| static av_always_inline void convert_to_rgb32_loco | ( | uint8_t * | dst, | |
| const uint8_t * | src, | |||
| int | width, | |||
| int | loco | |||
| ) | [static] |
| static int decode_frame | ( | AVCodecContext * | avctx, | |
| void * | data, | |||
| int * | data_size, | |||
| AVPacket * | avpkt | |||
| ) | [static] |
| static void deloco_rgb24 | ( | uint8_t * | dst, | |
| int | size | |||
| ) | [static] |
| static av_cold int png_dec_end | ( | AVCodecContext * | avctx | ) | [static] |
| static av_cold int png_dec_init | ( | AVCodecContext * | avctx | ) | [static] |
| static int png_decode_idat | ( | PNGDecContext * | s, | |
| int | length | |||
| ) | [static] |
| static void png_filter_row | ( | PNGDecContext * | s, | |
| uint8_t * | dst, | |||
| int | filter_type, | |||
| uint8_t * | src, | |||
| uint8_t * | last, | |||
| int | size, | |||
| int | bpp | |||
| ) | [static] |
| static void png_handle_row | ( | PNGDecContext * | s | ) | [static] |
| static void png_put_interlaced_row | ( | uint8_t * | dst, | |
| int | width, | |||
| int | bits_per_pixel, | |||
| int | pass, | |||
| int | color_type, | |||
| const uint8_t * | src | |||
| ) | [static] |
Initial value:
{
.name = "png",
.type = AVMEDIA_TYPE_VIDEO,
.id = CODEC_ID_PNG,
.priv_data_size = sizeof(PNGDecContext),
.init = png_dec_init,
.close = png_dec_end,
.decode = decode_frame,
.capabilities = CODEC_CAP_DR1 ,
.long_name = NULL_IF_CONFIG_SMALL("PNG image"),
}
const uint8_t png_pass_dsp_mask[NB_PASSES] [static] |
Initial value:
{
0xff, 0x0f, 0xff, 0x33, 0xff, 0x55, 0xff
}
Definition at line 41 of file pngdec.c.
Referenced by png_put_interlaced_row().
const uint8_t png_pass_dsp_ymask[NB_PASSES] [static] |
Initial value:
{
0xff, 0xff, 0x0f, 0xcc, 0x33, 0xff, 0x55,
}
Definition at line 36 of file pngdec.c.
Referenced by png_handle_row().
1.5.8