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;