@ -244,7 +244,7 @@ int ff_mjpeg_decode_dht(MJpegDecodeContext *s)
int ff_mjpeg_decode_sof ( MJpegDecodeContext * s )
{
int len , nb_components , i , width , height , pix_fmt_id , ret ;
int len , nb_components , i , width , height , bits , pix_fmt_id , ret ;
int h_count [ MAX_COMPONENTS ] ;
int v_count [ MAX_COMPONENTS ] ;
@ -254,11 +254,11 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
/* XXX: verify len field validity */
len = get_bits ( & s - > gb , 16 ) ;
s - > avctx - > bits_per_raw_sample =
s - > bits = get_bits ( & s - > gb , 8 ) ;
bits = get_bits ( & s - > gb , 8 ) ;
if ( s - > pegasus_rct )
s - > bits = 9 ;
if ( s - > bits = = 9 & & ! s - > pegasus_rct )
bits = 9 ;
if ( bits = = 9 & & ! s - > pegasus_rct )
s - > rct = 1 ; // FIXME ugly
if ( s - > lossless & & s - > avctx - > lowres ) {
@ -291,7 +291,7 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
return AVERROR_INVALIDDATA ;
}
}
if ( s - > ls & & ! ( s - > bits < = 8 | | nb_components = = 1 ) ) {
if ( s - > ls & & ! ( bits < = 8 | | nb_components = = 1 ) ) {
avpriv_report_missing_feature ( s - > avctx ,
" JPEG-LS that is not <= 8 "
" bits/component or 16-bit gray " ) ;
@ -337,11 +337,13 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s)
/* if different size, realloc/alloc picture */
if ( width ! = s - > width | | height ! = s - > height
| | bits ! = s - > bits
| | memcmp ( s - > h_count , h_count , sizeof ( h_count ) )
| | memcmp ( s - > v_count , v_count , sizeof ( v_count ) ) ) {
s - > width = width ;
s - > height = height ;
s - > bits = bits ;
memcpy ( s - > h_count , h_count , sizeof ( h_count ) ) ;
memcpy ( s - > v_count , v_count , sizeof ( v_count ) ) ;
s - > interlaced = 0 ;