Mercurial > mplayer.hg
comparison libmpcodecs/vd_mpng.c @ 32753:9981c24b59bd
Use color type getter instead of direct access to private member.
Using the getter is mandatory since recent libpng 1.5 release.
Patch by Gianluigi Tiesi (mplayer - netfarm it)
author | cboesch |
---|---|
date | Tue, 01 Feb 2011 20:45:41 +0000 |
parents | 9fc9d1e788aa |
children |
comparison
equal
deleted
inserted
replaced
32752:5c39b0060c2c | 32753:9981c24b59bd |
---|---|
72 static int pngPointer; | 72 static int pngPointer; |
73 static int pngLength; | 73 static int pngLength; |
74 | 74 |
75 static void pngReadFN( png_structp pngstr,png_bytep buffer,png_size_t size ) | 75 static void pngReadFN( png_structp pngstr,png_bytep buffer,png_size_t size ) |
76 { | 76 { |
77 char * p = pngstr->io_ptr; | 77 char * p = png_get_io_ptr(pngstr); |
78 if(size>pngLength-pngPointer && pngLength>=pngPointer) size=pngLength-pngPointer; | 78 if(size>pngLength-pngPointer && pngLength>=pngPointer) size=pngLength-pngPointer; |
79 fast_memcpy( buffer,(char *)&p[pngPointer],size ); | 79 fast_memcpy( buffer,(char *)&p[pngPointer],size ); |
80 pngPointer+=size; | 80 pngPointer+=size; |
81 } | 81 } |
82 | 82 |
88 // png_bytep data; | 88 // png_bytep data; |
89 png_bytep * row_p; | 89 png_bytep * row_p; |
90 png_uint_32 png_width=0,png_height=0; | 90 png_uint_32 png_width=0,png_height=0; |
91 int depth,color; | 91 int depth,color; |
92 png_uint_32 i; | 92 png_uint_32 i; |
93 png_byte color_type; | |
93 mp_image_t* mpi; | 94 mp_image_t* mpi; |
94 | 95 |
95 int cols; | 96 int cols; |
96 png_colorp pal; | 97 png_colorp pal; |
97 unsigned char *p; | 98 unsigned char *p; |
109 png_set_sig_bytes( png,8 ); | 110 png_set_sig_bytes( png,8 ); |
110 png_read_info( png,info ); | 111 png_read_info( png,info ); |
111 png_get_IHDR( png,info,&png_width,&png_height,&depth,&color,NULL,NULL,NULL ); | 112 png_get_IHDR( png,info,&png_width,&png_height,&depth,&color,NULL,NULL,NULL ); |
112 png_set_bgr( png ); | 113 png_set_bgr( png ); |
113 | 114 |
114 switch( info->color_type ) { | 115 color_type=png_get_color_type(png, info); |
116 | |
117 switch( color_type ) { | |
115 case PNG_COLOR_TYPE_GRAY_ALPHA: | 118 case PNG_COLOR_TYPE_GRAY_ALPHA: |
116 mp_msg( MSGT_DECVIDEO,MSGL_INFO,"Sorry gray scaled png with alpha channel not supported at moment.\n" ); | 119 mp_msg( MSGT_DECVIDEO,MSGL_INFO,"Sorry gray scaled png with alpha channel not supported at moment.\n" ); |
117 break; | 120 break; |
118 case PNG_COLOR_TYPE_GRAY: | 121 case PNG_COLOR_TYPE_GRAY: |
119 out_fmt=IMGFMT_Y800; | 122 out_fmt=IMGFMT_Y800; |
126 break; | 129 break; |
127 case PNG_COLOR_TYPE_RGB: | 130 case PNG_COLOR_TYPE_RGB: |
128 out_fmt=IMGFMT_BGR24; | 131 out_fmt=IMGFMT_BGR24; |
129 break; | 132 break; |
130 default: | 133 default: |
131 mp_msg( MSGT_DECVIDEO,MSGL_INFO,"Sorry, unsupported PNG colorspace: %d.\n" ,info->color_type); | 134 mp_msg( MSGT_DECVIDEO,MSGL_INFO,"Sorry, unsupported PNG colorspace: %d.\n" ,color_type); |
132 } | 135 } |
133 | 136 |
134 // (re)init libvo if image parameters changed (width/height/colorspace) | 137 // (re)init libvo if image parameters changed (width/height/colorspace) |
135 if(last_w!=png_width || last_h!=png_height || last_c!=out_fmt){ | 138 if(last_w!=png_width || last_h!=png_height || last_c!=out_fmt){ |
136 last_w=png_width; last_h=png_height; last_c=out_fmt; | 139 last_w=png_width; last_h=png_height; last_c=out_fmt; |