comparison tscc.c @ 2481:0803adcb3ec3 libavcodec

Add 32bit RGB support
author rtognimp
date Mon, 31 Jan 2005 22:34:02 +0000
parents d74d342cabb9
children 5e9f8eef19b9
comparison
equal deleted inserted replaced
2480:5252700f61df 2481:0803adcb3ec3
114 if(c->bpp == 8 && (p2 & 1)) { 114 if(c->bpp == 8 && (p2 & 1)) {
115 src++; 115 src++;
116 } 116 }
117 pos += p2; 117 pos += p2;
118 } else { //Run of pixels 118 } else { //Run of pixels
119 int pix[3]; //original pixel 119 int pix[4]; //original pixel
120 switch(c->bpp){ 120 switch(c->bpp){
121 case 8: pix[0] = *src++; 121 case 8: pix[0] = *src++;
122 break; 122 break;
123 case 16: pix[0] = *src++; 123 case 16: pix[0] = *src++;
124 pix[1] = *src++; 124 pix[1] = *src++;
125 break; 125 break;
126 case 24: pix[0] = *src++; 126 case 24: pix[0] = *src++;
127 pix[1] = *src++; 127 pix[1] = *src++;
128 pix[2] = *src++; 128 pix[2] = *src++;
129 break;
130 case 32: pix[0] = *src++;
131 pix[1] = *src++;
132 pix[2] = *src++;
133 pix[3] = *src++;
129 break; 134 break;
130 } 135 }
131 if (output + p1 * (c->bpp / 8) > output_end) 136 if (output + p1 * (c->bpp / 8) > output_end)
132 continue; 137 continue;
133 for(i = 0; i < p1; i++) { 138 for(i = 0; i < p1; i++) {
139 break; 144 break;
140 case 24: *output++ = pix[0]; 145 case 24: *output++ = pix[0];
141 *output++ = pix[1]; 146 *output++ = pix[1];
142 *output++ = pix[2]; 147 *output++ = pix[2];
143 break; 148 break;
149 case 32: *output++ = pix[0];
150 *output++ = pix[1];
151 *output++ = pix[2];
152 *output++ = pix[3];
153 break;
144 } 154 }
145 } 155 }
146 pos += p1; 156 pos += p1;
147 } 157 }
148 } 158 }
250 return 1; 260 return 1;
251 #endif 261 #endif
252 switch(avctx->bits_per_sample){ 262 switch(avctx->bits_per_sample){
253 case 8: avctx->pix_fmt = PIX_FMT_PAL8; break; 263 case 8: avctx->pix_fmt = PIX_FMT_PAL8; break;
254 case 16: avctx->pix_fmt = PIX_FMT_RGB555; break; 264 case 16: avctx->pix_fmt = PIX_FMT_RGB555; break;
255 case 24: av_log(avctx, AV_LOG_ERROR, "Camtasia warning: RGB24 is just guessed\n"); 265 case 24:
256 avctx->pix_fmt = PIX_FMT_BGR24; 266 avctx->pix_fmt = PIX_FMT_BGR24;
257 break; 267 break;
268 case 32: avctx->pix_fmt = PIX_FMT_RGBA32; break;
258 default: av_log(avctx, AV_LOG_ERROR, "Camtasia error: unknown depth %i bpp\n", avctx->bits_per_sample); 269 default: av_log(avctx, AV_LOG_ERROR, "Camtasia error: unknown depth %i bpp\n", avctx->bits_per_sample);
259 return -1; 270 return -1;
260 } 271 }
261 c->bpp = avctx->bits_per_sample; 272 c->bpp = avctx->bits_per_sample;
262 c->decomp_size = (avctx->width * c->bpp + (avctx->width + 254) / 255 + 2) * avctx->height + 2;//RLE in the 'best' case 273 c->decomp_size = (avctx->width * c->bpp + (avctx->width + 254) / 255 + 2) * avctx->height + 2;//RLE in the 'best' case