[FFmpeg-devel] flashsv error due to negative linesize value - not an intentional cross post!

Jason Askew jason.askew
Wed May 9 18:53:54 CEST 2007


I've definately isolated the issue to copy_region_enc.

static int copy_region_enc(uint8_t *sptr, uint8_t *dptr,
        int dx, int dy, int h, int w, int stride, uint8_t *pfptr) {

    int i,j;
    uint8_t *nsptr;
    uint8_t *npfptr;
    int diff = 0;

    for (i = dx+h; i > dx; i--) {
        nsptr = sptr+(i*stride)+dy*3;
        npfptr = pfptr+(i*stride)+dy*3;
        for (j=0 ; j<w*3 ; j++) {
            diff |=npfptr[j]^nsptr[j];
            dptr[j] = nsptr[j];
        }
        dptr += w*3;
    }
    if (diff)
        return 1;
    return 0;
}


int stride is set to linesize[0].  So, when linesize is negative, it
throws this function off, I believe due to:

        nsptr = sptr+(i*stride)+dy*3;
        npfptr = pfptr+(i*stride)+dy*3;

since stride is negative, these pointers end up being pointed to the
wrong memory.

Is there a good code to look at to see an example of negative linesize
and how to move thru frames with a negative linesize value?  Would
that put me on the right track?

Thanks.




More information about the ffmpeg-devel mailing list