]> git.pld-linux.org Git - packages/gpac.git/blob - 240_all_libpng15.patch
- release 12
[packages/gpac.git] / 240_all_libpng15.patch
1 Index: 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.063696 seconds and 3 git commands to generate.