Magellan Linux

Contents of /trunk/gpac/patches/gpac-0.4.5-libpng15.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1412 - (show annotations) (download)
Thu Jul 14 11:51:46 2011 UTC (12 years, 9 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