| @@ -1,13 +1,131 @@ | | | @@ -1,13 +1,131 @@ |
1 | $NetBSD: patch-ad,v 1.1 2010/06/13 22:45:05 wiz Exp $ | | 1 | $NetBSD: patch-ad,v 1.2 2011/02/06 15:50:04 wiz Exp $ |
| | | 2 | |
| | | 3 | Fix build with png-1.5. |
2 | | | 4 | |
3 | --- src/media_tools/img.c.orig 2008-12-01 17:39:36.000000000 +0000 | | 5 | --- src/media_tools/img.c.orig 2008-12-01 17:39:36.000000000 +0000 |
4 | +++ src/media_tools/img.c | | 6 | +++ src/media_tools/img.c |
5 | @@ -551,7 +551,7 @@ GF_Err gf_img_png_enc(char *data, u32 wi | | 7 | @@ -388,7 +388,7 @@ typedef struct |
| | | 8 | |
| | | 9 | static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length) |
| | | 10 | { |
| | | 11 | - GFpng *ctx = (GFpng*)png_ptr->io_ptr; |
| | | 12 | + GFpng *ctx = (GFpng*)png_get_io_ptr(png_ptr); |
| | | 13 | |
| | | 14 | if (ctx->pos + length > ctx->size) { |
| | | 15 | png_error(png_ptr, "Read Error"); |
| | | 16 | @@ -399,7 +399,11 @@ static void user_read_data(png_structp p |
| | | 17 | } |
| | | 18 | static void user_error_fn(png_structp png_ptr,png_const_charp error_msg) |
| | | 19 | { |
| | | 20 | +#if (PNG_LIBPNG_VER < 10500) |
| | | 21 | longjmp(png_ptr->jmpbuf, 1); |
| | | 22 | +#else |
| | | 23 | + png_longjmp(png_ptr, 1); |
| | | 24 | +#endif |
| | | 25 | } |
| | | 26 | |
| | | 27 | GF_EXPORT |
| | | 28 | @@ -409,7 +413,10 @@ GF_Err gf_img_png_dec(char *png, u32 png |
| | | 29 | png_struct *png_ptr; |
| | | 30 | png_info *info_ptr; |
| | | 31 | png_byte **rows; |
| | | 32 | - u32 i, stride, bpp; |
| | | 33 | + u32 i, stride; |
| | | 34 | + png_bytep trans_alpha; |
| | | 35 | + int num_trans; |
| | | 36 | + png_color_16p trans_color; |
| | | 37 | |
| | | 38 | if ((png_size<8) || png_sig_cmp(png, 0, 8) ) return GF_NON_COMPLIANT_BITSTREAM; |
| | | 39 | |
| | | 40 | @@ -424,7 +431,7 @@ GF_Err gf_img_png_dec(char *png, u32 png |
| | | 41 | png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); |
| | | 42 | return GF_IO_ERR; |
| | | 43 | } |
| | | 44 | - if (setjmp(png_ptr->jmpbuf)) { |
| | | 45 | + if (setjmp(png_jmpbuf(png_ptr))) { |
| | | 46 | png_destroy_info_struct(png_ptr,(png_infopp) & info_ptr); |
| | | 47 | png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); |
| | | 48 | return GF_IO_ERR; |
| | | 49 | @@ -435,30 +442,30 @@ GF_Err gf_img_png_dec(char *png, u32 png |
| | | 50 | png_read_info(png_ptr, info_ptr); |
| | | 51 | |
| | | 52 | /*unpaletize*/ |
| | | 53 | - if (info_ptr->color_type==PNG_COLOR_TYPE_PALETTE) { |
| | | 54 | + if (png_get_color_type(png_ptr, info_ptr)==PNG_COLOR_TYPE_PALETTE) { |
| | | 55 | png_set_expand(png_ptr); |
| | | 56 | png_read_update_info(png_ptr, info_ptr); |
| | | 57 | } |
| | | 58 | - if (info_ptr->num_trans) { |
| | | 59 | + png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color); |
| | | 60 | + if (num_trans) { |
| | | 61 | png_set_tRNS_to_alpha(png_ptr); |
| | | 62 | png_read_update_info(png_ptr, info_ptr); |
| | | 63 | } |
| | | 64 | |
| | | 65 | - bpp = info_ptr->pixel_depth / 8; |
| | | 66 | - *width = info_ptr->width; |
| | | 67 | - *height = info_ptr->height; |
| | | 68 | + *width = png_get_image_width(png_ptr, info_ptr); |
| | | 69 | + *height = png_get_image_height(png_ptr, info_ptr); |
| | | 70 | |
| | | 71 | - switch (info_ptr->pixel_depth) { |
| | | 72 | - case 8: |
| | | 73 | + switch (png_get_color_type(png_ptr, info_ptr)) { |
| | | 74 | + case PNG_COLOR_TYPE_GRAY: |
| | | 75 | *pixel_format = GF_PIXEL_GREYSCALE; |
| | | 76 | break; |
| | | 77 | - case 16: |
| | | 78 | + case PNG_COLOR_TYPE_GRAY_ALPHA: |
| | | 79 | *pixel_format = GF_PIXEL_ALPHAGREY; |
| | | 80 | break; |
| | | 81 | - case 24: |
| | | 82 | + case PNG_COLOR_TYPE_RGB: |
| | | 83 | *pixel_format = GF_PIXEL_RGB_24; |
| | | 84 | break; |
| | | 85 | - case 32: |
| | | 86 | + case PNG_COLOR_TYPE_RGB_ALPHA: |
| | | 87 | *pixel_format = GF_PIXEL_RGBA; |
| | | 88 | break; |
| | | 89 | default: |
| | | 90 | @@ -469,18 +476,18 @@ GF_Err gf_img_png_dec(char *png, u32 png |
| | | 91 | } |
| | | 92 | |
| | | 93 | /*new cfg, reset*/ |
| | | 94 | - if (*dst_size != info_ptr->width * info_ptr->height * bpp) { |
| | | 95 | - *dst_size = info_ptr->width * info_ptr->height * bpp; |
| | | 96 | + if (*dst_size != png_get_rowbytes(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)) { |
| | | 97 | + *dst_size = png_get_rowbytes(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr); |
| | | 98 | png_destroy_info_struct(png_ptr,(png_infopp) & info_ptr); |
| | | 99 | png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL); |
| | | 100 | return GF_BUFFER_TOO_SMALL; |
| | | 101 | } |
| | | 102 | - *dst_size = info_ptr->width * info_ptr->height * bpp; |
| | | 103 | + *dst_size = png_get_rowbytes(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr); |
| | | 104 | |
| | | 105 | /*read*/ |
| | | 106 | stride = png_get_rowbytes(png_ptr, info_ptr); |
| | | 107 | - rows = (png_bytepp) malloc(sizeof(png_bytep) * info_ptr->height); |
| | | 108 | - for (i=0; i<info_ptr->height; i++) { |
| | | 109 | + rows = (png_bytepp) malloc(sizeof(png_bytep) * png_get_image_height(png_ptr, info_ptr)); |
| | | 110 | + for (i=0; i<png_get_image_height(png_ptr, info_ptr); i++) { |
| | | 111 | rows[i] = dst + i*stride; |
| | | 112 | } |
| | | 113 | png_read_image(png_ptr, rows); |
| | | 114 | @@ -495,7 +502,7 @@ GF_Err gf_img_png_dec(char *png, u32 png |
| | | 115 | |
| | | 116 | void my_png_write(png_structp png, png_bytep data, png_size_t size) |
| | | 117 | { |
| | | 118 | - GFpng *p = (GFpng *)png->io_ptr; |
| | | 119 | + GFpng *p = (GFpng *)png_get_io_ptr(png); |
| | | 120 | memcpy(p->buffer+p->pos, data, sizeof(char)*size); |
| | | 121 | p->pos += size; |
| | | 122 | } |
| | | 123 | @@ -551,7 +558,7 @@ GF_Err gf_img_png_enc(char *data, u32 wi |
6 | /* Allocate/initialize the image information data. REQUIRED */ | | 124 | /* Allocate/initialize the image information data. REQUIRED */ |
7 | info_ptr = png_create_info_struct(png_ptr); | | 125 | info_ptr = png_create_info_struct(png_ptr); |
8 | if (info_ptr == NULL) { | | 126 | if (info_ptr == NULL) { |
9 | - png_destroy_write_struct(&png_ptr, png_infopp_NULL); | | 127 | - png_destroy_write_struct(&png_ptr, png_infopp_NULL); |
10 | + png_destroy_write_struct(&png_ptr, NULL); | | 128 | + png_destroy_write_struct(&png_ptr, NULL); |
11 | return GF_IO_ERR; | | 129 | return GF_IO_ERR; |
12 | } | | 130 | } |
13 | | | 131 | |