Annotation of /trunk/gpac/patches/gpac-0.4.5-libpng15.patch
Parent Directory | Revision Log
Revision 1412 -
(hide annotations)
(download)
Thu Jul 14 11:51:46 2011 UTC (13 years, 2 months ago) by niro
File size: 4339 byte(s)
Thu Jul 14 11:51:46 2011 UTC (13 years, 2 months ago) by niro
File size: 4339 byte(s)
added libpng-1.5 patch
1 | niro | 1412 | $NetBSD: patch-ad,v 1.2 2011/02/06 15:50:04 wiz Exp $ |
2 | |||
3 | Fix build with png-1.5. | ||
4 | |||
5 | --- src/media_tools/img.c.orig 2008-12-01 17:39:36.000000000 +0000 | ||
6 | +++ src/media_tools/img.c | ||
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 | ||
124 | /* Allocate/initialize the image information data. REQUIRED */ | ||
125 | info_ptr = png_create_info_struct(png_ptr); | ||
126 | if (info_ptr == NULL) { | ||
127 | - png_destroy_write_struct(&png_ptr, png_infopp_NULL); | ||
128 | + png_destroy_write_struct(&png_ptr, NULL); | ||
129 | return GF_IO_ERR; | ||
130 | } | ||
131 |