@ -451,6 +451,11 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[],
uint8_t * dst [ ] , int dstStride [ ] )
{
int alpha_first = 0 ;
const uint8_t * src102 [ ] = { src [ 1 ] , src [ 0 ] , src [ 2 ] } ;
const uint8_t * src201 [ ] = { src [ 2 ] , src [ 0 ] , src [ 1 ] } ;
int stride102 [ ] = { srcStride [ 1 ] , srcStride [ 0 ] , srcStride [ 2 ] } ;
int stride201 [ ] = { srcStride [ 2 ] , srcStride [ 0 ] , srcStride [ 1 ] } ;
if ( c - > srcFormat ! = AV_PIX_FMT_GBRP ) {
av_log ( c , AV_LOG_ERROR , " unsupported planar RGB conversion %s -> %s \n " ,
av_get_pix_fmt_name ( c - > srcFormat ) ,
@ -460,15 +465,13 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[],
switch ( c - > dstFormat ) {
case AV_PIX_FMT_BGR24 :
gbr24ptopacked24 ( ( const uint8_t * [ ] ) { src [ 1 ] , src [ 0 ] , src [ 2 ] } ,
( int [ ] ) { srcStride [ 1 ] , srcStride [ 0 ] , srcStride [ 2 ] } ,
gbr24ptopacked24 ( src102 , stride102 ,
dst [ 0 ] + srcSliceY * dstStride [ 0 ] , dstStride [ 0 ] ,
srcSliceH , c - > srcW ) ;
break ;
case AV_PIX_FMT_RGB24 :
gbr24ptopacked24 ( ( const uint8_t * [ ] ) { src [ 2 ] , src [ 0 ] , src [ 1 ] } ,
( int [ ] ) { srcStride [ 2 ] , srcStride [ 0 ] , srcStride [ 1 ] } ,
gbr24ptopacked24 ( src201 , stride201 ,
dst [ 0 ] + srcSliceY * dstStride [ 0 ] , dstStride [ 0 ] ,
srcSliceH , c - > srcW ) ;
break ;
@ -476,8 +479,7 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[],
case AV_PIX_FMT_ARGB :
alpha_first = 1 ;
case AV_PIX_FMT_RGBA :
gbr24ptopacked32 ( ( const uint8_t * [ ] ) { src [ 2 ] , src [ 0 ] , src [ 1 ] } ,
( int [ ] ) { srcStride [ 2 ] , srcStride [ 0 ] , srcStride [ 1 ] } ,
gbr24ptopacked32 ( src201 , stride201 ,
dst [ 0 ] + srcSliceY * dstStride [ 0 ] , dstStride [ 0 ] ,
srcSliceH , alpha_first , c - > srcW ) ;
break ;
@ -485,8 +487,7 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[],
case AV_PIX_FMT_ABGR :
alpha_first = 1 ;
case AV_PIX_FMT_BGRA :
gbr24ptopacked32 ( ( const uint8_t * [ ] ) { src [ 1 ] , src [ 0 ] , src [ 2 ] } ,
( int [ ] ) { srcStride [ 1 ] , srcStride [ 0 ] , srcStride [ 2 ] } ,
gbr24ptopacked32 ( src102 , stride102 ,
dst [ 0 ] + srcSliceY * dstStride [ 0 ] , dstStride [ 0 ] ,
srcSliceH , alpha_first , c - > srcW ) ;
break ;