[FFmpeg-devel] [PATCH] libswscale: simplify unscaled rgb48<->bgr48

Michael Niedermayer michaelni at gmx.at
Wed Jul 18 14:41:48 CEST 2012


On Wed, Jul 18, 2012 at 12:12:26AM +0000, Paul B Mahol wrote:
> Using av_bswap16 should be enough.
> 
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
>  libswscale/colorspace-test.c  |    4 ++--
>  libswscale/rgb2rgb.c          |   15 +++++++--------
>  libswscale/rgb2rgb.h          |    4 ++--
>  libswscale/swscale_unscaled.c |    4 ++--
>  4 files changed, 13 insertions(+), 14 deletions(-)
> 
> diff --git a/libswscale/colorspace-test.c b/libswscale/colorspace-test.c
> index 440b5d3..afea4a7 100644
> --- a/libswscale/colorspace-test.c
> +++ b/libswscale/colorspace-test.c
> @@ -84,8 +84,8 @@ int main(int argc, char **argv)
>              FUNC(4, 2, rgb32tobgr16),
>              FUNC(4, 3, rgb32tobgr24),
>              FUNC(4, 4, shuffle_bytes_2103), /* rgb32tobgr32 */
> -            FUNC(6, 6, rgb48tobgr48_LL),
> -            FUNC(6, 6, rgb48tobgr48_LB),
> +            FUNC(6, 6, rgb48tobgr48_0),
> +            FUNC(6, 6, rgb48tobgr48_1),
>              FUNC(0, 0, NULL)
>          };
>          int width;
> diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c
> index afc8d1f..63b9988 100644
> --- a/libswscale/rgb2rgb.c
> +++ b/libswscale/rgb2rgb.c
> @@ -26,7 +26,6 @@
>  #include <inttypes.h>
>  
>  #include "libavutil/bswap.h"
> -#include "libavutil/intreadwrite.h"
>  #include "config.h"
>  #include "rgb2rgb.h"
>  #include "swscale.h"
> @@ -335,8 +334,8 @@ DEFINE_SHUFFLE_BYTES(1, 2, 3, 0)
>  DEFINE_SHUFFLE_BYTES(3, 0, 1, 2)
>  DEFINE_SHUFFLE_BYTES(3, 2, 1, 0)
>  
> -#define DEFINE_RGB48TOBGR48(ie, oe)                                     \
> -void rgb48tobgr48_ ## ie ## oe(const uint8_t *src,                      \
> +#define DEFINE_RGB48TOBGR48(swap)                                       \
> +void rgb48tobgr48_ ## swap(const uint8_t *src,                          \
>                                 uint8_t *dst, int src_size)              \
>  {                                                                       \
>      uint16_t *d = (uint16_t *)dst;                                      \
> @@ -344,11 +343,11 @@ void rgb48tobgr48_ ## ie ## oe(const uint8_t *src,                      \
>      int i, num_pixels = src_size >> 1;                                  \
>                                                                          \
>      for (i = 0; i < num_pixels; i += 3) {                               \
> -        AV_W ## oe ## 16(&d[i    ], AV_R ## ie ## 16(&s[i + 2]));       \
> -        AV_W ## oe ## 16(&d[i + 1], AV_R ## ie ## 16(&s[i + 1]));       \
> -        AV_W ## oe ## 16(&d[i + 2], AV_R ## ie ## 16(&s[i    ]));       \
> +        d[i    ] = swap ? av_bswap16(s[i + 2]) : s[i + 2];              \
> +        d[i + 1] = swap ? av_bswap16(s[i + 1]) : s[i + 1];              \
> +        d[i + 2] = swap ? av_bswap16(s[i    ]) : s[i    ];              \
>      }                                                                   \
>  }
>  
> -DEFINE_RGB48TOBGR48(L, L)
> -DEFINE_RGB48TOBGR48(L, B)
> +DEFINE_RGB48TOBGR48(0)
> +DEFINE_RGB48TOBGR48(1)
> diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h
> index 6e3be2a..92c964f 100644
> --- a/libswscale/rgb2rgb.h
> +++ b/libswscale/rgb2rgb.h
> @@ -52,8 +52,8 @@ extern void (*rgb32tobgr15)(const uint8_t *src, uint8_t *dst, int src_size);
>  
>  extern void (*shuffle_bytes_2103)(const uint8_t *src, uint8_t *dst, int src_size);
>  
> -void rgb48tobgr48_LL(const uint8_t *src, uint8_t *dst, int src_size);
> -void rgb48tobgr48_LB(const uint8_t *src, uint8_t *dst, int src_size);
> +void rgb48tobgr48_0(const uint8_t *src, uint8_t *dst, int src_size);
> +void rgb48tobgr48_1(const uint8_t *src, uint8_t *dst, int src_size);

rgb48tobgr48 and rgb48tobgr48_bswap seem clearer names
otherwise LGTM

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

it is not once nor twice but times without number that the same ideas make
their appearance in the world. -- Aristotle
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20120718/7068c85c/attachment.asc>


More information about the ffmpeg-devel mailing list