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

Reply via email to