]> git.pld-linux.org Git - packages/gpac.git/blame - 240_all_libpng15.patch
- rel 11; libpng fix
[packages/gpac.git] / 240_all_libpng15.patch
CommitLineData
5240089a
AM
1Index: gpac/src/media_tools/img.c
2===================================================================
3--- gpac.orig/src/media_tools/img.c
4+++ gpac/src/media_tools/img.c
5@@ -388,7 +388,7 @@ typedef struct
6
7 static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
8 {
9- GFpng *ctx = (GFpng*)png_ptr->io_ptr;
10+ GFpng *ctx = (GFpng*)png_get_io_ptr(png_ptr);
11
12 if (ctx->pos + length > ctx->size) {
13 png_error(png_ptr, "Read Error");
14@@ -399,7 +399,7 @@ static void user_read_data(png_structp p
15 }
16 static void user_error_fn(png_structp png_ptr,png_const_charp error_msg)
17 {
18- longjmp(png_ptr->jmpbuf, 1);
19+ longjmp(png_jmpbuf(png_ptr), 1);
20 }
21
22 GF_EXPORT
23@@ -409,7 +409,11 @@ GF_Err gf_img_png_dec(char *png, u32 png
24 png_struct *png_ptr;
25 png_info *info_ptr;
26 png_byte **rows;
27- u32 i, stride, bpp;
28+ u32 i, stride;
29+ int num_trans;
30+ png_bytep trans_alpha;
31+ png_color_16p trans_color;
32+ int bit_depth, color_type;
33
34 if ((png_size<8) || png_sig_cmp(png, 0, 8) ) return GF_NON_COMPLIANT_BITSTREAM;
35
36@@ -424,7 +428,7 @@ GF_Err gf_img_png_dec(char *png, u32 png
37 png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
38 return GF_IO_ERR;
39 }
40- if (setjmp(png_ptr->jmpbuf)) {
41+ if (setjmp(png_jmpbuf(png_ptr))) {
42 png_destroy_info_struct(png_ptr,(png_infopp) & info_ptr);
43 png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
44 return GF_IO_ERR;
45@@ -434,31 +438,31 @@ GF_Err gf_img_png_dec(char *png, u32 png
46
47 png_read_info(png_ptr, info_ptr);
48
49+ png_get_IHDR(png_ptr,info_ptr,width,height,&bit_depth,&color_type,NULL,NULL,NULL);
50 /*unpaletize*/
51- if (info_ptr->color_type==PNG_COLOR_TYPE_PALETTE) {
52+ if (color_type==PNG_COLOR_TYPE_PALETTE) {
53 png_set_expand(png_ptr);
54 png_read_update_info(png_ptr, info_ptr);
55 }
56- if (info_ptr->num_trans) {
57+ png_get_tRNS(png_ptr,info_ptr,&trans_alpha,&num_trans,&trans_color);
58+ if (num_trans) {
59 png_set_tRNS_to_alpha(png_ptr);
60 png_read_update_info(png_ptr, info_ptr);
61 }
62
63- bpp = info_ptr->pixel_depth / 8;
64- *width = info_ptr->width;
65- *height = info_ptr->height;
66+ png_get_IHDR(png_ptr,info_ptr,width,height,&bit_depth,&color_type,NULL,NULL,NULL);
67
68- switch (info_ptr->pixel_depth) {
69- case 8:
70+ switch (color_type) {
71+ case PNG_COLOR_TYPE_GRAY:
72 *pixel_format = GF_PIXEL_GREYSCALE;
73 break;
74- case 16:
75+ case PNG_COLOR_TYPE_GRAY_ALPHA:
76 *pixel_format = GF_PIXEL_ALPHAGREY;
77 break;
78- case 24:
79+ case PNG_COLOR_TYPE_RGB:
80 *pixel_format = GF_PIXEL_RGB_24;
81 break;
82- case 32:
83+ case PNG_COLOR_TYPE_RGB_ALPHA:
84 *pixel_format = GF_PIXEL_RGBA;
85 break;
86 default:
87@@ -469,18 +473,17 @@ GF_Err gf_img_png_dec(char *png, u32 png
88 }
89
90 /*new cfg, reset*/
91- if (*dst_size != info_ptr->width * info_ptr->height * bpp) {
92- *dst_size = info_ptr->width * info_ptr->height * bpp;
93+ if (*dst_size != png_get_rowbytes(png_ptr, info_ptr) * png_get_image_height(png_ptr,info_ptr)) {
94+ *dst_size = png_get_rowbytes(png_ptr, info_ptr) * png_get_image_height(png_ptr,info_ptr);
95 png_destroy_info_struct(png_ptr,(png_infopp) & info_ptr);
96 png_destroy_read_struct(&png_ptr, (png_infopp)NULL, (png_infopp)NULL);
97 return GF_BUFFER_TOO_SMALL;
98 }
99- *dst_size = info_ptr->width * info_ptr->height * bpp;
100
101 /*read*/
102 stride = png_get_rowbytes(png_ptr, info_ptr);
103- rows = (png_bytepp) malloc(sizeof(png_bytep) * info_ptr->height);
104- for (i=0; i<info_ptr->height; i++) {
105+ rows = (png_bytepp) malloc(sizeof(png_bytep) * png_get_image_height(png_ptr,info_ptr));
106+ for (i=0; i<png_get_image_height(png_ptr,info_ptr); i++) {
107 rows[i] = dst + i*stride;
108 }
109 png_read_image(png_ptr, rows);
110@@ -495,7 +498,7 @@ GF_Err gf_img_png_dec(char *png, u32 png
111
112 void my_png_write(png_structp png, png_bytep data, png_size_t size)
113 {
114- GFpng *p = (GFpng *)png->io_ptr;
115+ GFpng *p = (GFpng *)png_get_io_ptr(png);
116 memcpy(p->buffer+p->pos, data, sizeof(char)*size);
117 p->pos += size;
118 }
This page took 0.857665 seconds and 4 git commands to generate.