annotate gui/util/bitmap.c @ 33137:f884fb919ac5

Remove various pngRead() debug messages. Instead, issue the return code in the debug message after calling pngRead() and increase return code values to allow exact error assignments.
author ib
date Tue, 05 Apr 2011 13:44:02 +0000
parents 07be88814256
children 3335d117f6e6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
1 /*
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
2 * This file is part of MPlayer.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
3 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
7 * (at your option) any later version.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
8 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
12 * GNU General Public License for more details.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
13 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
17 */
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
18
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
19 #include <stdio.h>
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
20 #include <stdlib.h>
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
21 #include <string.h>
33130
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
22 #include <unistd.h>
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
23
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
24 #include "bitmap.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
25
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
26 #include "help_mp.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
27 #include "libavcodec/avcodec.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
28 #include "libavutil/intreadwrite.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
29 #include "libvo/fastmemcpy.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
30 #include "mp_msg.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
31
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
32 static int pngRead(unsigned char *fname, txSample *bf)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
33 {
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
34 FILE *file;
33134
ffe524b8b8f3 Make len match ftell() return value type.
ib
parents: 33133
diff changeset
35 long len;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
36 void *data;
33135
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
37 int decode_ok, bpl;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
38 AVCodecContext *avctx;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
39 AVFrame *frame;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
40 AVPacket pkt;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
41
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
42 file = fopen(fname, "rb");
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
43
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
44 if (!file)
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
45 return 2;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
46
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
47 fseek(file, 0, SEEK_END);
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
48 len = ftell(file);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
49
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
50 if (len > 50 * 1024 * 1024) {
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
51 fclose(file);
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
52 return 3;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
53 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
54
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
55 data = av_malloc(len + FF_INPUT_BUFFER_PADDING_SIZE);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
56
33135
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
57 if (!data) {
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
58 fclose(file);
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
59 return 4;
33135
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
60 }
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
61
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
62 fseek(file, 0, SEEK_SET);
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
63 fread(data, len, 1, file);
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
64 fclose(file);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
65
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
66 avctx = avcodec_alloc_context();
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
67 frame = avcodec_alloc_frame();
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
68 avcodec_register_all();
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
69 avcodec_open(avctx, avcodec_find_decoder(CODEC_ID_PNG));
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
70 av_init_packet(&pkt);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
71 pkt.data = data;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
72 pkt.size = len;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
73 // HACK: make PNGs decode normally instead of as CorePNG delta frames
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
74 pkt.flags = AV_PKT_FLAG_KEY;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
75 avcodec_decode_video2(avctx, frame, &decode_ok, &pkt);
33134
ffe524b8b8f3 Make len match ftell() return value type.
ib
parents: 33133
diff changeset
76
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
77 memset(bf, 0, sizeof(*bf));
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
78
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
79 switch (avctx->pix_fmt) {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
80 case PIX_FMT_GRAY8:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
81 bf->BPP = 8;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
82 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
83
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
84 case PIX_FMT_GRAY16BE:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
85 bf->BPP = 16;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
86 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
87
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
88 case PIX_FMT_RGB24:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
89 bf->BPP = 24;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
90 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
91
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
92 case PIX_FMT_BGRA:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
93 case PIX_FMT_ARGB:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
94 bf->BPP = 32;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
95 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
96
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
97 default:
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
98 bf->BPP = 0;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
99 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
100 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
101
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
102 if (decode_ok && bf->BPP) {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
103 bf->Width = avctx->width;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
104 bf->Height = avctx->height;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
105 bpl = bf->Width * (bf->BPP / 8);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
106 bf->ImageSize = bpl * bf->Height;
33136
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
107
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
108 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] file: %s\n", fname);
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
109 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] size: %lux%lu, color depth: %u\n", bf->Width, bf->Height, bf->BPP);
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
110 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] image size: %lu\n", bf->ImageSize);
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
111
07be88814256 Move debug messages.
ib
parents: 33135
diff changeset
112 bf->Image = malloc(bf->ImageSize);
33135
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
113
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
114 if (bf->Image)
36fdc061b4a8 Prevent segmentation faults.
ib
parents: 33134
diff changeset
115 memcpy_pic(bf->Image, frame->data[0], bpl, bf->Height, bpl, frame->linesize[0]);
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
116 else
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
117 decode_ok = 0;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
118 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
119
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
120 avcodec_close(avctx);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
121 av_freep(&frame);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
122 av_freep(&avctx);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
123 av_freep(&data);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
124
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
125 return !(decode_ok && bf->BPP);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
126 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
127
33121
7623be6c1f0e Rename conv24to32() Convert24to32().
ib
parents: 33120
diff changeset
128 static int Convert24to32(txSample *bf)
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
129 {
33132
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
130 char *orgImage;
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
131 unsigned long i, c;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
132
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
133 if (bf->BPP == 24) {
33132
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
134 orgImage = bf->Image;
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
135
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
136 bf->BPP = 32;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
137 bf->ImageSize = bf->Width * bf->Height * 4;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
138 bf->Image = calloc(1, bf->ImageSize);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
139
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
140 if (!bf->Image) {
33132
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
141 free(orgImage);
33112
654dfdf176ac Revise debug messages.
ib
parents: 33053
diff changeset
142 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] not enough memory: %lu\n", bf->ImageSize);
33121
7623be6c1f0e Rename conv24to32() Convert24to32().
ib
parents: 33120
diff changeset
143 return 0;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
144 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
145
33112
654dfdf176ac Revise debug messages.
ib
parents: 33053
diff changeset
146 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] 32 bpp conversion size: %lu\n", bf->ImageSize);
654dfdf176ac Revise debug messages.
ib
parents: 33053
diff changeset
147
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
148 for (c = 0, i = 0; c < bf->ImageSize; c += 4, i += 3)
33132
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
149 *(uint32_t *)&bf->Image[c] = AV_RB24(&orgImage[i]);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
150
33132
6ac1b560e209 Revise Convert24to32().
ib
parents: 33131
diff changeset
151 free(orgImage);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
152 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
153
33121
7623be6c1f0e Rename conv24to32() Convert24to32().
ib
parents: 33120
diff changeset
154 return 1;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
155 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
156
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
157 static void Normalize(txSample *bf)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
158 {
33131
aa753565a901 Revise Normalize().
ib
parents: 33130
diff changeset
159 unsigned long i;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
160
33131
aa753565a901 Revise Normalize().
ib
parents: 33130
diff changeset
161 for (i = 0; i < bf->ImageSize; i += 4)
aa753565a901 Revise Normalize().
ib
parents: 33130
diff changeset
162 #if HAVE_BIGENDIAN
aa753565a901 Revise Normalize().
ib
parents: 33130
diff changeset
163 bf->Image[i] = 0;
aa753565a901 Revise Normalize().
ib
parents: 33130
diff changeset
164 #else
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
165 bf->Image[i + 3] = 0;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
166 #endif
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
167 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
168
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
169 static unsigned char *fExist(unsigned char *fname)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
170 {
33130
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
171 unsigned char *ext[] = { "png", "PNG" };
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
172 static unsigned char buf[512];
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
173 unsigned int i;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
174
33130
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
175 if (access(fname, R_OK) == 0)
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
176 return fname;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
177
33130
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
178 for (i = 0; i < FF_ARRAY_ELEMS(ext); i++) {
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
179 snprintf(buf, sizeof(buf), "%s.%s", fname, ext[i]);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
180
33130
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
181 if (access(buf, R_OK) == 0)
4f60cd16ac04 Clean up and simplify fExist().
ib
parents: 33129
diff changeset
182 return buf;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
183 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
184
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
185 return NULL;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
186 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
187
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
188 int bpRead(char *fname, txSample *bf)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
189 {
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
190 int r;
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
191
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
192 fname = fExist(fname);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
193
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
194 if (!fname)
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
195 return -2;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
196
33137
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
197 r = pngRead(fname, bf);
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
198
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
199 if (r != 0) {
f884fb919ac5 Remove various pngRead() debug messages.
ib
parents: 33136
diff changeset
200 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] read error #%d: %s\n", r, fname);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
201 return -5;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
202 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
203
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
204 if (bf->BPP < 24) {
33112
654dfdf176ac Revise debug messages.
ib
parents: 33053
diff changeset
205 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] bpp too low: %u\n", bf->BPP);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
206 return -1;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
207 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
208
33121
7623be6c1f0e Rename conv24to32() Convert24to32().
ib
parents: 33120
diff changeset
209 if (!Convert24to32(bf))
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
210 return -8;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
211
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
212 Normalize(bf);
33053
f64d41dac10b Cosmetic: Separate return statement with newline.
ib
parents: 33046
diff changeset
213
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
214 return 0;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
215 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
216
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
217 void bpFree(txSample *bf)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
218 {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
219 free(bf->Image);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
220 memset(bf, 0, sizeof(*bf));
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
221 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
222
33129
5f3171d4d7a4 Define the transparent color as a macro.
ib
parents: 33128
diff changeset
223 int Convert32to1(txSample *in, txSample *out)
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
224 {
33118
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
225 uint32_t *buf;
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
226 unsigned long i;
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
227 int b = 0, c = 0;
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
228 unsigned char tmp = 0;
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
229 int shaped = 0;
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
230
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
231 out->Width = in->Width;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
232 out->Height = in->Height;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
233 out->BPP = 1;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
234 out->ImageSize = (out->Width * out->Height + 7) / 8;
33118
ae464a957cd0 Move variable definitions at top of function.
ib
parents: 33117
diff changeset
235 out->Image = calloc(1, out->ImageSize);
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
236
33122
1d81476c0d1e Cosmetic: Rephrase some conditions and rename some variables.
ib
parents: 33121
diff changeset
237 if (!out->Image) {
33114
5ad451a5ebec Remove useless warning message.
ib
parents: 33113
diff changeset
238 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] not enough memory: %lu\n", out->ImageSize);
5ad451a5ebec Remove useless warning message.
ib
parents: 33113
diff changeset
239 return 0;
33125
9c178cf14a61 Get rid of else-block to improve readability.
ib
parents: 33122
diff changeset
240 }
9c178cf14a61 Get rid of else-block to improve readability.
ib
parents: 33122
diff changeset
241
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
242 buf = (uint32_t *)in->Image;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
243
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
244 for (i = 0; i < out->Width * out->Height; i++) {
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
245 tmp >>= 1;
33119
8835e684a41d Move common pixel shifting statement
ib
parents: 33118
diff changeset
246
33129
5f3171d4d7a4 Define the transparent color as a macro.
ib
parents: 33128
diff changeset
247 if (buf[i] != TRANSPARENT)
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
248 tmp |= 0x80;
33128
64d19aaf624a Revert r33214.
ib
parents: 33127
diff changeset
249 else {
64d19aaf624a Revert r33214.
ib
parents: 33127
diff changeset
250 buf[i] = 0;
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
251 shaped = 1;
33128
64d19aaf624a Revert r33214.
ib
parents: 33127
diff changeset
252 }
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
253
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
254 if (++b == 8) {
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
255 out->Image[c++] = tmp;
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
256 tmp = b = 0;
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
257 }
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
258 }
33112
654dfdf176ac Revise debug messages.
ib
parents: 33053
diff changeset
259
33126
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
260 if (b)
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
261 out->Image[c] = tmp;
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
262
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
263 if (!shaped)
a5dc70e2cda3 Cosmetic: Adjust indent.
ib
parents: 33125
diff changeset
264 bpFree(out);
33114
5ad451a5ebec Remove useless warning message.
ib
parents: 33113
diff changeset
265
33133
41485430b18a Move debug message.
ib
parents: 33132
diff changeset
266 mp_dbg(MSGT_GPLAYER, MSGL_DBG2, "[bitmap] 1 bpp conversion size: %lu\n", out->ImageSize);
41485430b18a Move debug message.
ib
parents: 33132
diff changeset
267
33114
5ad451a5ebec Remove useless warning message.
ib
parents: 33113
diff changeset
268 return 1;
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
269 }