Mercurial > libavcodec.hg
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 |