diff options
author | Anton Khirnov <anton@khirnov.net> | 2012-12-08 12:58:46 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2013-01-26 13:02:19 +0100 |
commit | 9221c0af772efe142c5572630500b7ab95024aa9 (patch) | |
tree | 9f03f7013f5f3905f87e9b2a0b970c0ec46707fc /libavcodec/pngdec.c | |
parent | edb2426b75a151dacae6cafc09ad65cbd7d55e62 (diff) | |
download | ffmpeg-9221c0af772efe142c5572630500b7ab95024aa9.tar.gz |
pngdec: cosmetics, reformat.
Also remove a commented out line.
Diffstat (limited to 'libavcodec/pngdec.c')
-rw-r--r-- | libavcodec/pngdec.c | 150 |
1 files changed, 77 insertions, 73 deletions
diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 9c340eacb4..b4e1faeae8 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -86,15 +86,16 @@ static void png_put_interlaced_row(uint8_t *dst, int width, uint8_t *d; const uint8_t *s; - mask = ff_png_pass_mask[pass]; + mask = ff_png_pass_mask[pass]; dsp_mask = png_pass_dsp_mask[pass]; - switch(bits_per_pixel) { + + switch (bits_per_pixel) { case 1: /* we must initialize the line to zero before writing to it */ if (pass == 0) memset(dst, 0, (width + 7) >> 3); src_x = 0; - for(x = 0; x < width; x++) { + for (x = 0; x < width; x++) { j = (x & 7); if ((dsp_mask << j) & 0x80) { b = (src[src_x >> 3] >> (7 - (src_x & 7))) & 1; @@ -106,10 +107,10 @@ static void png_put_interlaced_row(uint8_t *dst, int width, break; default: bpp = bits_per_pixel >> 3; - d = dst; - s = src; + d = dst; + s = src; if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) { - for(x = 0; x < width; x++) { + for (x = 0; x < width; x++) { j = x & 7; if ((dsp_mask << j) & 0x80) { *(uint32_t *)d = (s[3] << 24) | (s[0] << 16) | (s[1] << 8) | s[2]; @@ -136,14 +137,14 @@ static void png_put_interlaced_row(uint8_t *dst, int width, void ff_add_png_paeth_prediction(uint8_t *dst, uint8_t *src, uint8_t *top, int w, int bpp) { int i; - for(i = 0; i < w; i++) { + for (i = 0; i < w; i++) { int a, b, c, p, pa, pb, pc; a = dst[i - bpp]; b = top[i]; c = top[i - bpp]; - p = b - c; + p = b - c; pc = a - c; pa = abs(p); @@ -195,20 +196,20 @@ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type, { int i, p, r, g, b, a; - switch(filter_type) { + switch (filter_type) { case PNG_FILTER_VALUE_NONE: memcpy(dst, src, size); break; case PNG_FILTER_VALUE_SUB: - for(i = 0; i < bpp; i++) { + for (i = 0; i < bpp; i++) { dst[i] = src[i]; } - if(bpp == 4) { + if (bpp == 4) { p = *(int*)dst; - for(; i < size; i+=bpp) { - int s = *(int*)(src+i); - p = ((s&0x7f7f7f7f) + (p&0x7f7f7f7f)) ^ ((s^p)&0x80808080); - *(int*)(dst+i) = p; + for (; i < size; i += bpp) { + int s = *(int*)(src + i); + p = ((s & 0x7f7f7f7f) + (p & 0x7f7f7f7f)) ^ ((s ^ p) & 0x80808080); + *(int*)(dst + i) = p; } } else { #define OP_SUB(x,s,l) x+s @@ -219,7 +220,7 @@ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type, dsp->add_bytes_l2(dst, src, last, size); break; case PNG_FILTER_VALUE_AVG: - for(i = 0; i < bpp; i++) { + for (i = 0; i < bpp; i++) { p = (last[i] >> 1); dst[i] = p + src[i]; } @@ -227,34 +228,36 @@ static void png_filter_row(PNGDSPContext *dsp, uint8_t *dst, int filter_type, UNROLL_FILTER(OP_AVG); break; case PNG_FILTER_VALUE_PAETH: - for(i = 0; i < bpp; i++) { + for (i = 0; i < bpp; i++) { p = last[i]; dst[i] = p + src[i]; } - if(bpp > 1 && size > 4) { + if (bpp > 1 && size > 4) { // would write off the end of the array if we let it process the last pixel with bpp=3 - int w = bpp==4 ? size : size-3; - dsp->add_paeth_prediction(dst+i, src+i, last+i, w-i, bpp); + int w = bpp == 4 ? size : size - 3; + dsp->add_paeth_prediction(dst + i, src + i, last + i, w - i, bpp); i = w; } - ff_add_png_paeth_prediction(dst+i, src+i, last+i, size-i, bpp); + ff_add_png_paeth_prediction(dst + i, src + i, last + i, size - i, bpp); break; } } -static av_always_inline void convert_to_rgb32_loco(uint8_t *dst, const uint8_t *src, int width, int loco) +static av_always_inline void convert_to_rgb32_loco(uint8_t *dst, + const uint8_t *src, + int width, int loco) { int j; unsigned int r, g, b, a; - for(j = 0;j < width; j++) { + for (j = 0; j < width; j++) { r = src[0]; g = src[1]; b = src[2]; a = src[3]; - if(loco) { - r = (r+g)&0xff; - b = (b+g)&0xff; + if (loco) { + r = (r + g) & 0xff; + b = (b + g) & 0xff; } *(uint32_t *)dst = (a << 24) | (r << 16) | (g << 8) | b; dst += 4; @@ -264,7 +267,7 @@ static av_always_inline void convert_to_rgb32_loco(uint8_t *dst, const uint8_t * static void convert_to_rgb32(uint8_t *dst, const uint8_t *src, int width, int loco) { - if(loco) + if (loco) convert_to_rgb32_loco(dst, src, width, 1); else convert_to_rgb32_loco(dst, src, width, 0); @@ -273,10 +276,10 @@ static void convert_to_rgb32(uint8_t *dst, const uint8_t *src, int width, int lo static void deloco_rgb24(uint8_t *dst, int size) { int i; - for(i=0; i<size; i+=3) { - int g = dst[i+1]; - dst[i+0] += g; - dst[i+2] += g; + for (i = 0; i < size; i += 3) { + int g = dst[i + 1]; + dst[i + 0] += g; + dst[i + 2] += g; } } @@ -317,7 +320,7 @@ static void png_handle_row(PNGDecContext *s) } } else { got_line = 0; - for(;;) { + for (;;) { ptr = s->image_buf + s->image_linesize * s->y; if ((ff_png_pass_ymask[s->pass] << (s->y & 7)) & 0x80) { /* if we already read one row, it is time to stop to @@ -336,7 +339,7 @@ static void png_handle_row(PNGDecContext *s) } s->y++; if (s->y == s->height) { - for(;;) { + for (;;) { if (s->pass == NB_PASSES - 1) { s->state |= PNG_ALLIMAGE; goto the_end; @@ -362,7 +365,7 @@ static int png_decode_idat(PNGDecContext *s, int length) { int ret; s->zstream.avail_in = FFMIN(length, bytestream2_get_bytes_left(&s->gb)); - s->zstream.next_in = s->gb.buffer; + s->zstream.next_in = s->gb.buffer; bytestream2_skip(&s->gb, length); /* decode one line if possible */ @@ -376,7 +379,7 @@ static int png_decode_idat(PNGDecContext *s, int length) png_handle_row(s); } s->zstream.avail_out = s->crow_size; - s->zstream.next_out = s->crow_buf; + s->zstream.next_out = s->crow_buf; } } return 0; @@ -386,17 +389,17 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt) { - const uint8_t *buf = avpkt->data; - int buf_size = avpkt->size; PNGDecContext * const s = avctx->priv_data; - AVFrame *picture = data; + const uint8_t *buf = avpkt->data; + int buf_size = avpkt->size; + AVFrame *picture = data; + uint8_t *crow_buf_base = NULL; AVFrame *p; - uint8_t *crow_buf_base = NULL; uint32_t tag, length; int ret; FFSWAP(AVFrame *, s->current_picture, s->last_picture); - avctx->coded_frame= s->current_picture; + avctx->coded_frame = s->current_picture; p = s->current_picture; /* check signature */ @@ -406,17 +409,16 @@ static int decode_frame(AVCodecContext *avctx, return -1; bytestream2_init(&s->gb, buf + 8, buf_size - 8); - s->y= - s->state=0; -// memset(s, 0, sizeof(PNGDecContext)); + s->y = s->state = 0; + /* init the zlib */ s->zstream.zalloc = ff_png_zalloc; - s->zstream.zfree = ff_png_zfree; + s->zstream.zfree = ff_png_zfree; s->zstream.opaque = NULL; ret = inflateInit(&s->zstream); if (ret != Z_OK) return -1; - for(;;) { + for (;;) { if (bytestream2_get_bytes_left(&s->gb) <= 0) goto fail; length = bytestream2_get_be32(&s->gb); @@ -428,14 +430,14 @@ static int decode_frame(AVCodecContext *avctx, ((tag >> 8) & 0xff), ((tag >> 16) & 0xff), ((tag >> 24) & 0xff), length); - switch(tag) { + switch (tag) { case MKTAG('I', 'H', 'D', 'R'): if (length != 13) goto fail; s->width = bytestream2_get_be32(&s->gb); s->height = bytestream2_get_be32(&s->gb); - if(av_image_check_size(s->width, s->height, 0, avctx)){ - s->width= s->height= 0; + if (av_image_check_size(s->width, s->height, 0, avctx)) { + s->width = s->height = 0; goto fail; } s->bit_depth = bytestream2_get_byte(&s->gb); @@ -445,7 +447,8 @@ static int decode_frame(AVCodecContext *avctx, s->interlace_type = bytestream2_get_byte(&s->gb); bytestream2_skip(&s->gb, 4); /* crc */ s->state |= PNG_IHDR; - av_dlog(avctx, "width=%d height=%d depth=%d color_type=%d compression_type=%d filter_type=%d interlace_type=%d\n", + av_dlog(avctx, "width=%d height=%d depth=%d color_type=%d " + "compression_type=%d filter_type=%d interlace_type=%d\n", s->width, s->height, s->bit_depth, s->color_type, s->compression_type, s->filter_type, s->interlace_type); break; @@ -454,13 +457,13 @@ static int decode_frame(AVCodecContext *avctx, goto fail; if (!(s->state & PNG_IDAT)) { /* init image info */ - avctx->width = s->width; + avctx->width = s->width; avctx->height = s->height; - s->channels = ff_png_get_nb_channels(s->color_type); + s->channels = ff_png_get_nb_channels(s->color_type); s->bits_per_pixel = s->bit_depth * s->channels; - s->bpp = (s->bits_per_pixel + 7) >> 3; - s->row_size = (avctx->width * s->bits_per_pixel + 7) >> 3; + s->bpp = (s->bits_per_pixel + 7) >> 3; + s->row_size = (avctx->width * s->bits_per_pixel + 7) >> 3; if (s->bit_depth == 8 && s->color_type == PNG_COLOR_TYPE_RGB) { @@ -489,16 +492,16 @@ static int decode_frame(AVCodecContext *avctx, } else { goto fail; } - if(p->data[0]) + if (p->data[0]) avctx->release_buffer(avctx, p); - p->reference= 0; - if(ff_get_buffer(avctx, p) < 0){ + p->reference = 0; + if (ff_get_buffer(avctx, p) < 0) { av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); goto fail; } - p->pict_type= AV_PICTURE_TYPE_I; - p->key_frame= 1; + p->pict_type = AV_PICTURE_TYPE_I; + p->key_frame = 1; p->interlaced_frame = !!s->interlace_type; /* compute the compressed row size */ @@ -513,7 +516,7 @@ static int decode_frame(AVCodecContext *avctx, } av_dlog(avctx, "row_size=%d crow_size =%d\n", s->row_size, s->crow_size); - s->image_buf = p->data[0]; + s->image_buf = p->data[0]; s->image_linesize = p->linesize[0]; /* copy the palette if needed */ if (s->color_type == PNG_COLOR_TYPE_PALETTE) @@ -534,9 +537,9 @@ static int decode_frame(AVCodecContext *avctx, goto fail; /* we want crow_buf+1 to be 16-byte aligned */ - s->crow_buf = crow_buf_base + 15; + s->crow_buf = crow_buf_base + 15; s->zstream.avail_out = s->crow_size; - s->zstream.next_out = s->crow_buf; + s->zstream.next_out = s->crow_buf; } s->state |= PNG_IDAT; if (png_decode_idat(s, length) < 0) @@ -551,13 +554,13 @@ static int decode_frame(AVCodecContext *avctx, goto skip_tag; /* read the palette */ n = length / 3; - for(i=0;i<n;i++) { + for (i = 0; i < n; i++) { r = bytestream2_get_byte(&s->gb); g = bytestream2_get_byte(&s->gb); b = bytestream2_get_byte(&s->gb); s->palette[i] = (0xff << 24) | (r << 16) | (g << 8) | b; } - for(;i<256;i++) { + for (; i < 256; i++) { s->palette[i] = (0xff << 24); } s->state |= PNG_PLTE; @@ -573,7 +576,7 @@ static int decode_frame(AVCodecContext *avctx, length > 256 || !(s->state & PNG_PLTE)) goto skip_tag; - for(i=0;i<length;i++) { + for (i = 0; i < length; i++) { v = bytestream2_get_byte(&s->gb); s->palette[i] = (s->palette[i] & 0x00ffffff) | (v << 24); } @@ -594,23 +597,23 @@ static int decode_frame(AVCodecContext *avctx, } exit_loop: /* handle p-frames only if a predecessor frame is available */ - if(s->last_picture->data[0] != NULL) { - if(!(avpkt->flags & AV_PKT_FLAG_KEY)) { + if (s->last_picture->data[0] != NULL) { + if (!(avpkt->flags & AV_PKT_FLAG_KEY)) { int i, j; - uint8_t *pd = s->current_picture->data[0]; + uint8_t *pd = s->current_picture->data[0]; uint8_t *pd_last = s->last_picture->data[0]; - for(j=0; j < s->height; j++) { - for(i=0; i < s->width * s->bpp; i++) { + for (j = 0; j < s->height; j++) { + for (i = 0; i < s->width * s->bpp; i++) { pd[i] += pd_last[i]; } - pd += s->image_linesize; + pd += s->image_linesize; pd_last += s->image_linesize; } } } - *picture= *s->current_picture; + *picture = *s->current_picture; *got_frame = 1; ret = bytestream2_tell(&s->gb); @@ -626,11 +629,12 @@ static int decode_frame(AVCodecContext *avctx, goto the_end; } -static av_cold int png_dec_init(AVCodecContext *avctx){ +static av_cold int png_dec_init(AVCodecContext *avctx) +{ PNGDecContext *s = avctx->priv_data; s->current_picture = &s->picture1; - s->last_picture = &s->picture2; + s->last_picture = &s->picture2; avcodec_get_frame_defaults(&s->picture1); avcodec_get_frame_defaults(&s->picture2); ff_pngdsp_init(&s->dsp); |