Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


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