libavcodec/pngdec.c File Reference

#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 Documentation

#define OP_AVG ( x,
s,
 )     (((x + l) >> 1) + s) & 0xff

#define OP_SUB ( x,
s,
 )     x+s

Referenced by png_filter_row().

#define pb_7f   (~0UL/255 * 0x7f)

Definition at line 104 of file pngdec.c.

#define pb_80   (~0UL/255 * 0x80)

Definition at line 105 of file pngdec.c.

#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]);\
    }\
}

Definition at line 146 of file pngdec.c.

#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 162 of file pngdec.c.

Referenced by png_filter_row().


Function Documentation

static void add_bytes_l2_c ( uint8_t *  dst,
uint8_t *  src1,
uint8_t *  src2,
int  w 
) [static]

Definition at line 107 of file pngdec.c.

Referenced by png_dec_init().

static void add_paeth_prediction_c ( uint8_t *  dst,
uint8_t *  src,
uint8_t *  top,
int  w,
int  bpp 
) [static]

Definition at line 119 of file pngdec.c.

Referenced by png_dec_init(), and png_filter_row().

static void convert_to_rgb32 ( uint8_t *  dst,
const uint8_t *  src,
int  width,
int  loco 
) [static]

Definition at line 248 of file pngdec.c.

Referenced by png_handle_row().

static av_always_inline void convert_to_rgb32_loco ( uint8_t *  dst,
const uint8_t *  src,
int  width,
int  loco 
) [static]

Definition at line 228 of file pngdec.c.

Referenced by convert_to_rgb32().

static int decode_frame ( AVCodecContext avctx,
void *  data,
int *  data_size,
AVPacket avpkt 
) [static]

Definition at line 371 of file pngdec.c.

static void deloco_rgb24 ( uint8_t *  dst,
int  size 
) [static]

Definition at line 256 of file pngdec.c.

Referenced by png_handle_row().

static av_cold int png_dec_end ( AVCodecContext avctx  )  [static]

Definition at line 639 of file pngdec.c.

static av_cold int png_dec_init ( AVCodecContext avctx  )  [static]

Definition at line 618 of file pngdec.c.

static int png_decode_idat ( PNGDecContext s,
int  length 
) [static]

Definition at line 344 of file pngdec.c.

Referenced by decode_frame().

static void png_filter_row ( PNGDecContext s,
uint8_t *  dst,
int  filter_type,
uint8_t *  src,
uint8_t *  last,
int  size,
int  bpp 
) [static]

Definition at line 176 of file pngdec.c.

Referenced by png_choose_filter(), and png_handle_row().

static void png_handle_row ( PNGDecContext s  )  [static]

Definition at line 267 of file pngdec.c.

Referenced by png_decode_idat().

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]

Definition at line 48 of file pngdec.c.

Referenced by png_handle_row().


Variable Documentation

Initial value:

Definition at line 651 of file pngdec.c.

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().


Generated on Fri Oct 26 02:38:17 2012 for FFmpeg by  doxygen 1.5.8