avcodec/lcldec: Make PNG filter addressing match the code afterwards
Also update check accordingly Fixes: tickets/10237/mszh_306_306_yuv422_nocompress.avi Fixes: tickets/10237/mszh_306_306_yuv411_nocompress.avi Signed-off-by: Michael Niedermayer <michael@niedermayer.cc> (cherry picked from commit d11b8bd0c610c212d2a28767f94dc07a8ec473cf) Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
		
							parent
							
								
									8101135606
								
							
						
					
					
						commit
						5371943592
					
				@ -226,16 +226,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
 | 
			
		||||
            break;
 | 
			
		||||
        case COMP_MSZH_NOCOMP: {
 | 
			
		||||
            int bppx2;
 | 
			
		||||
            int aligned_width = width;
 | 
			
		||||
            switch (c->imgtype) {
 | 
			
		||||
            case IMGTYPE_YUV111:
 | 
			
		||||
            case IMGTYPE_RGB24:
 | 
			
		||||
                bppx2 = 6;
 | 
			
		||||
                break;
 | 
			
		||||
            case IMGTYPE_YUV422:
 | 
			
		||||
                aligned_width &= ~3;
 | 
			
		||||
            case IMGTYPE_YUV211:
 | 
			
		||||
                bppx2 = 4;
 | 
			
		||||
                break;
 | 
			
		||||
            case IMGTYPE_YUV411:
 | 
			
		||||
                aligned_width &= ~3;
 | 
			
		||||
            case IMGTYPE_YUV420:
 | 
			
		||||
                bppx2 = 3;
 | 
			
		||||
                break;
 | 
			
		||||
@ -243,7 +246,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
 | 
			
		||||
                bppx2 = 0; // will error out below
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            if (len < ((width * height * bppx2) >> 1))
 | 
			
		||||
            if (len < ((aligned_width * height * bppx2) >> 1))
 | 
			
		||||
                return AVERROR_INVALIDDATA;
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
@ -309,8 +312,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case IMGTYPE_YUV422:
 | 
			
		||||
            pixel_ptr = 0;
 | 
			
		||||
            for (row = 0; row < height; row++) {
 | 
			
		||||
                pixel_ptr = row * width * 2;
 | 
			
		||||
                yq = uq = vq =0;
 | 
			
		||||
                for (col = 0; col < width/4; col++) {
 | 
			
		||||
                    encoded[pixel_ptr] = yq -= encoded[pixel_ptr];
 | 
			
		||||
@ -326,8 +329,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
 | 
			
		||||
            }
 | 
			
		||||
            break;
 | 
			
		||||
        case IMGTYPE_YUV411:
 | 
			
		||||
            pixel_ptr = 0;
 | 
			
		||||
            for (row = 0; row < height; row++) {
 | 
			
		||||
                pixel_ptr = row * width / 2 * 3;
 | 
			
		||||
                yq = uq = vq =0;
 | 
			
		||||
                for (col = 0; col < width/4; col++) {
 | 
			
		||||
                    encoded[pixel_ptr] = yq -= encoded[pixel_ptr];
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user