@ -121,7 +121,7 @@ int ff_rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f,
if ( res < 0 ) \
return res ; \
if ( res > 0 ) \
c - > dsp - > idct_put ( dst , stride , block ) ; \
c - > dsp . idct_put ( dst , stride , block ) ; \
} while ( 0 )
int16_t * block = c - > block ;
BLOCK ( c - > lquant , y1 , f - > linesize [ 0 ] ) ;
@ -148,7 +148,6 @@ int ff_rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f,
/**
* @ brief initialize an RTJpegContext , may be called multiple times
* @ param c context to initialize
* @ param dsp specifies the idct to use for decoding
* @ param width width of image , will be rounded down to the nearest multiple
* of 16 for decoding
* @ param height height of image , will be rounded down to the nearest multiple
@ -156,21 +155,29 @@ int ff_rtjpeg_decode_frame_yuv420(RTJpegContext *c, AVFrame *f,
* @ param lquant luma quantization table to use
* @ param cquant chroma quantization table to use
*/
void ff_rtjpeg_decode_init ( RTJpegContext * c , DSPContext * dsp ,
int width , int height ,
void ff_rtjpeg_decode_init ( RTJpegContext * c , int width , int height ,
const uint32_t * lquant , const uint32_t * cquant ) {
int i ;
c - > dsp = dsp ;
for ( i = 0 ; i < 64 ; i + + ) {
int z = ff_zigzag_direct [ i ] ;
int p = c - > dsp - > idct_permutation [ i ] ;
z = ( ( z < < 3 ) | ( z > > 3 ) ) & 63 ; // rtjpeg uses a transposed variant
// permute the scan and quantization tables for the chosen idct
c - > scan [ i ] = c - > dsp - > idct_permutation [ z ] ;
int p = c - > dsp . idct_permutation [ i ] ;
c - > lquant [ p ] = lquant [ i ] ;
c - > cquant [ p ] = cquant [ i ] ;
}
c - > w = width ;
c - > h = height ;
}
void ff_rtjpeg_init ( RTJpegContext * c , AVCodecContext * avctx )
{
int i ;
ff_dsputil_init ( & c - > dsp , avctx ) ;
for ( i = 0 ; i < 64 ; i + + ) {
int z = ff_zigzag_direct [ i ] ;
z = ( ( z < < 3 ) | ( z > > 3 ) ) & 63 ; // rtjpeg uses a transposed variant
// permute the scan and quantization tables for the chosen idct
c - > scan [ i ] = c - > dsp . idct_permutation [ z ] ;
}
}