[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