Contents of /trunk/gpac/patches/gpac-0.4.5-libpng15.patch
Parent Directory | Revision Log
Revision 1412 -
(show 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 | $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 |