On 09/23/2011 07:22 PM, Jean First wrote:
> - for(i = 0; i < s->height; i++) {
> - for(j = soff; j < ssize; j++)
> - dst[j] += dst[j - soff];
> - dst += stride;
> + if (s->avctx->pix_fmt == PIX_FMT_RGB48LE) {
> + for (i = 0; i < s->height; i++) {
> + for (j = soff; j < ssize; j += 2)
> + AV_WL16(dst + j, AV_RL16(dst + j) + AV_RL16(dst + j -
> soff));
> + dst += stride;
> + }
> + } else if (s->avctx->pix_fmt == PIX_FMT_RGB48BE) {
> + for (i = 0; i < s->height; i++) {
> + for (j = soff; j < ssize; j += 2)
> + AV_WB16(dst + j, AV_RB16(dst + j) + AV_RB16(dst + j -
> soff));
> + dst += stride;
> + }
> + } else {
> + for (i = 0; i < s->height; i++) {
> + for (j = soff; j < ssize; j++)
> + dst[j] += dst[j - soff];
> + dst += stride;
> + }
i think it would be simpler to output in native-endian pixel format if
predictor == 2.
> - if(s->invert){
> - uint8_t *src;
> - int j;
> -
> - src = s->picture.data[0];
> - for(j = 0; j < s->height; j++){
> - for(i = 0; i < s->picture.linesize[0]; i++)
> - src[i] = 255 - src[i];
> - src += s->picture.linesize[0];
> + if (s->invert){
> + dst = s->picture.data[0];
> + for (i = 0; i < s->height; i++) {
> + for (j = 0; j < s->picture.linesize[0]; j++)
> + dst[j] = 255 - dst[j];
> + dst += s->picture.linesize[0];
has this been tested with 16-bit white-is-zero grayscale? the 255 seems
wrong. or is this just clean-up?
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel