You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	jpeg2000dec: Support non subsampled 9-16bit planar pixel formats
This applies changes similar to fc6de70c44
to the >8bit codepath
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
			
			
This commit is contained in:
		| @@ -1292,14 +1292,20 @@ static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, | ||||
|             uint16_t *linel; | ||||
|             int cbps = s->cbps[compno]; | ||||
|             int w = tile->comp[compno].coord[0][1] - s->image_offset_x; | ||||
|             int planar = !!picture->data[2]; | ||||
|             int pixelsize = planar ? 1 : s->ncomponents; | ||||
|             int plane = 0; | ||||
|  | ||||
|             if (planar) | ||||
|                 plane = s->cdef[compno] ? s->cdef[compno]-1 : (s->ncomponents-1); | ||||
|  | ||||
|             y     = tile->comp[compno].coord[1][0] - s->image_offset_y; | ||||
|             linel = (uint16_t *)picture->data[0] + y * (picture->linesize[0] >> 1); | ||||
|             linel = (uint16_t *)picture->data[plane] + y * (picture->linesize[plane] >> 1); | ||||
|             for (; y < tile->comp[compno].coord[1][1] - s->image_offset_y; y += s->cdy[compno]) { | ||||
|                 uint16_t *dst; | ||||
|  | ||||
|                 x   = tile->comp[compno].coord[0][0] - s->image_offset_x; | ||||
|                 dst = linel + (x * s->ncomponents + compno); | ||||
|                 dst = linel + (x * pixelsize + compno*!planar); | ||||
|                 if (codsty->transform == FF_DWT97) { | ||||
|                     for (; x < w; x += s-> cdx[compno]) { | ||||
|                         int  val = lrintf(*datap) + (1 << (cbps - 1)); | ||||
| @@ -1308,7 +1314,7 @@ static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, | ||||
|                         /* align 12 bit values in little-endian mode */ | ||||
|                         *dst = val << (16 - cbps); | ||||
|                         datap++; | ||||
|                         dst += s->ncomponents; | ||||
|                         dst += pixelsize; | ||||
|                     } | ||||
|                 } else { | ||||
|                     for (; x < w; x += s-> cdx[compno]) { | ||||
| @@ -1318,10 +1324,10 @@ static int jpeg2000_decode_tile(Jpeg2000DecoderContext *s, Jpeg2000Tile *tile, | ||||
|                         /* align 12 bit values in little-endian mode */ | ||||
|                         *dst = val << (16 - cbps); | ||||
|                         i_datap++; | ||||
|                         dst += s->ncomponents; | ||||
|                         dst += pixelsize; | ||||
|                     } | ||||
|                 } | ||||
|                 linel += picture->linesize[0] >> 1; | ||||
|                 linel += picture->linesize[plane] >> 1; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user